__autoload()函式,如果定義了該函式,那麼當在**中使用乙個未定義的類的時候,該函式就會被呼叫,你可以在該函式中載入相應的類實現檔案,如:
function __autoload($classname)
.php")
}但該函式已經不被建議使用,原因是乙個專案中僅能有乙個這樣的 __autoload() 函式,因為 php 不允許函式重名。但當你使用一些類庫的時候,難免會出現多個 autoload 函式的需要,於是 spl_autoload_register() 取而代之:
spl_autoload_register(function($classname)
.php")
});spl_autoload_register() 會將乙個函式註冊到 autoload 函式列表中,當出現未定義的類的時候,spl 會按照註冊的倒序逐個呼叫被註冊的 autoload 函式,這意味著你可以使用 spl_autoload_register() 註冊多個 autoload 函式.
pdo 和 mysqli
按照傳統的風格,訪問 mysql 資料庫應該是這樣子:
// 連線到伺服器,選擇資料庫
$conn = mysql_connect("localhost", "user", "password");
mysql_select_db("database");
// 執行 sql 查詢
$type = $_post['type'];
$sql = "select * from `table` where `type` = ";
$result = mysql_query($sql);
// 列印結果
while($row = mysql_fetch_array($result, mysql_assoc))
: \n";
}// 釋放結果集,關閉連線
mysql_free_result($result);
mysql_close($conn);
為了能夠讓**實現資料庫無關,即一段**同時適用於多種資料庫(例如以上**僅僅適用於mysql),php 官方設計了 pdo.
1.物件導向風格的介面
2.sql預編譯(prepare), 佔位符語法
3.更高的執行效率,作為官方推薦,有特別的效能優化
4.支援大部分sql資料庫,更換資料庫無需改動**
上面的**用 pdo 實現將會是這樣:
// 連線到資料庫
$conn = new pdo("mysql:host=localhost;dbname=database", "user", "password");
// 預編譯sql, 繫結引數
$query = $conn->prepare("select * from `table` where `type` = :type");
$query->bindparam("type", $_post['type']);
// 執行查詢並列印結果
foreach($query->execute() as $row)
: \n";
}pdo 是官方推薦的,更為通用的資料庫訪問方式,如果你沒有特殊需求,那麼你最好學習和使用 pdo.
但如果你需要使用 mysql 所特有的高階功能,那麼你可能需要嘗試一下 mysqli, 因為 pdo 為了能夠同時在多種資料庫上使用,不會包含那些 mysql 獨有的功能。
mysqli 是 mysql 的增強介面,同時提供面向過程和物件導向介面,也是目前推薦的 mysql 驅動,舊的c風格 mysql 介面將會在今後被預設關閉。
mysqli 的用法和以上兩段**相比,沒有太多新概念,在此不再給出示例,可以參見 php 官網文件
型別約束
通過型別約束可以限制引數的型別,不過這一機制並不完善,目前僅適用於類和 callable(可執行型別) 以及 array(陣列), 不適用於 string 和 int.
// 限制第乙個引數為 myclass, 第二個引數為可執行型別,第三個引數為陣列
function myfunction(myclass $a, callable $b, array $c)
php5 2以下版本json encode相容性
php5.1版本通過編譯載入的json.so,在使用json encode時會把鍵名為空的陣列 arr array array id aaa total bbb 轉化成空 但是在php5.2中使用使用自帶的此函式不存在此問題。或者不想編譯載入json.so擴充套件,可以使用替代函式 jsonenco...
php5 2以上版本安裝與擴充套件庫的安裝
安裝完phpmyadmin,大家經常出現的問題就是報錯 無法載入mysql擴充套件,請檢查php配置 如果你使用的是php5.2以上的版本,請注意 php對服務的擴充套件功能做了一定的改動,也就是說,你安裝php和擴充套件的方式也要做調整了。主要的調整有兩方面,一是php5.2以上的版本中,php....
PHP5 2中PDO的簡單使用
pdo配置 1 確保php版本為5.2.5以上 主要是我用的5.2.5,第一次不知道用的5.1.x的,結果一直搞不好 2 在php.ini中找到dynamic extensions擴充套件部分,去掉extension php pdo.dll前面的分號 3 去掉相應資料庫pdo擴充套件前面的分號,如 ...