茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729345 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_60D_00261.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2015/1/3 9:59:15
PHP 5.4.0 在美國時間2012年3月1號釋出,到現在已經發展到 5.4.3,之前寫過一篇 PHP 5.4.0 released!! 新功能,這次我們來探討看看 PHP 5.4.x 對於程式設計師在轉換平台或者是開發新功能所需要注意的地方。

Incompatible Changes

1. Safe mode 不再被支援,如果專案有任何牽扯到 Safe mode,請務必要調整 2.
Magic quotes 正式被移除,基本上目前開發 PHP 程式,務必將此設定為 FALSE,這樣之後轉移機器比較不會有任何問題,由於此設定已被移除,所以 get_magic_quotes_gpc() and get_magic_quotes_runtime() 這兩函式都會直接 return FALSE; 3. php.ini 正式移除 register_globals and register_long_arrays 兩項設定,這就不必多說了,遇到 POST 或 GET 資料,請大家全部改用 $_POST$_GET4. 移除
Call-time pass by reference 功能 以前可以 Call-time pass by reference 傳位址到 function 參數
function foo($var)
{
$var++;
}
$a=5;
foo(&$a);
// $a is 6 here
?>
5.4.X 請改寫成底下方式
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
?>
或是用 global 寫法
$a = 5;
function foo()
{
global $a;
$a++;
}
// $a is 6 here
?>
5.
break and continue 不再接受變數參數 (e.g., break 1 + foo() * $bar;),另外 break 0; 跟 continue 0; 也不能使用,只能直接使用 break 1; break 2; 等 之前如果這樣寫
$num = 2;
break $num;
在 5.4.x 請改寫成
break 2;
6. 在 date and time extension,timezone 不再使用 TZ environment variable,進而取代用 php.ini 裡的 date.timezone 或者是使用 php date_default_timezone_set() function,如果都沒有設定,PHP 將會吐出 E_WARNING 訊息 7. isset()empty() 變化 我想大家對這兩個函數並不陌生,isset 用來判斷變數 是否存在,empty 用來判斷變數 是否為空值,在 5.4 比較值得注意的地方是 isset on string 的用法。 PHP 5.3.x 以前
$expected_array_got_string = 'somestring';
var_dump(isset($expected_array_got_string['some_key']));
var_dump(isset($expected_array_got_string[0]));
var_dump(isset($expected_array_got_string['0']));
var_dump(isset($expected_array_got_string[0.5]));
var_dump(isset($expected_array_got_string['0.5']));
var_dump(isset($expected_array_got_string['0 Mostel']));
?>
大家會發現全部 return true;,可是到了 PHP 5.4.X 版本,除了 [0] 或 [‘0′] 會 return true 之外,其他都是 return false;。不過個人建議程式最好不要這樣寫,在判斷變數是否存在的時候,最好先透過
is_array()is_string() 判斷此變數是 array 或者是 string,反而上面的舉例是很少看到的。 8. 禁止 super globals 變數當作任何 function 參數,例如:
function ($_POST, $_GET) {
}
9. 移除
session_is_registered(), session_register() and session_unregister() function。 Session 的操作其實非常簡單,上面的 function 其實都是多餘的。 判斷 Session 是否存在:
if (isset($_SESSION['foo']))
{
echo 'session is exist';
}
註冊 Session
$_SESSION['foo'] = 'bar';
移除 Session
unset($_SESSION['foo']);
結論是操作 Session 就等同於操作 array 是一樣意思,所以才說那三個 function 早該移除了。

新功能 (New features)

可以先看之前寫的一篇 PHP 5.4.0 released!! 新功能 裡面提到 traits, array 新用法以及 web server in CLI mode,另外底下在整理幾點新功能: 1. short_open_tag 不需要設定就可以支援,也就是說底下程式會變成通用寫法 我們在 view 裡面都會這樣寫
或者是(先決條件是將 short_open_tag 設定為 on)
但是在 PHP 5.4.X 之後全部支援 short_open_tag 寫法。不過勸大家還是不要懶惰,用最原始的寫法還是最安全的。 2. 支援 Class member access on instantiation has been added 以前宣告 Class 都必須透過指定單一變數
$test = new foo();
$test->bar();
5.4.X 可以透過底下寫法
(new foo)->bar();
其實還有很多細節的部份,可以直接參考官網 Migrating from PHP 5.3.x to PHP 5.4.x,希望上面的例子,可以讓大家更瞭解 PHP 5.4.X。

原文出處: 程式設計師需要注意的 PHP 5.4 變化 | 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|