PHP5 2之前版本總結

2022-06-25 14:30:15 字數 2091 閱讀 8638

__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擴充套件前面的分號,如 ...