PHP5 的一些新功能
從Fedora core 3 升級到 core 4,正確的說,應該是從PHP4升級到PHP5的時候,是不是發生了一些小問題。至少,我是如此。雖然問題終究還是解決了,但是從網路上一些討論PHP5的文章,大多著重於其OO的改變上。事實上,除了這些,我還發現了一些新功能,與新設定。
- register_long_arrays in php.ini
就是這個新設定讓我的blog暫停了一陣子。Default 它的值是off ,這會造成使用$HTTP_XXX_VARS(XXX = POST, GET, SESSION ...)的程式取不到值,將register_long_arrays設成on是治標方法,因為設定成ON較影響PHP的效率。治本就是將程式中$HTTP_XXX_VARS 改成 $_XXX (例如:$_POST)。
- foreach的超強新功能
首先,他提供了傳址(reference)功能,這使得要改變一個array更加方便,參考以下範例(取自www.php.net):
<?
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>
若在PHP4則需寫成
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>
<?
$arr = array(1, 2, 3, 4);
$i=0;
foreach ($arr as $value) {
$arr[$i++] = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>
$arr = array(1, 2, 3, 4);
$i=0;
foreach ($arr as $value) {
$arr[$i++] = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>
其次,foreach可以使用在物件,詳細的內容下一篇專門討論物件的文章再說,基本上,程式是像這樣的:
<?
$myobj = new MyClass();
foreach ($myobj as $k =>$v) {
echo "$k = $v";
}
#會印出myobj中所有visibale properties的值
?>
$myobj = new MyClass();
foreach ($myobj as $k =>$v) {
echo "$k = $v";
}
#會印出myobj中所有visibale properties的值
?>
是不是很強呢?
- 新增 try...catch
PHP5新增了 Try-Catch來handle 例外。如同Java它也可以丟出一個自訂的例外。要產生一個例外是用
throw new Exception();
而自訂的例外就是繼承 Exception Class:
class MyException extends Exception {
...................
}
...................
}
以上就是我的發現,應該還有很多東西有待我們去發覺吧!!
1 迴響 |
0 引用


