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

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00275.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

PHP特區 : [分享]session 的使用必須有幾個要素

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[分享]程式設計師需要注意的 PHP 5.4 變化
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
前一個主題 | 下一個主題 | | | |

討論串




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