本文實例講述了php7 list()、session及其他模塊的修改。分享給大家供大家參考,具體如下:
一、list()不再按照相反的順序賦值
list($array[], $array[], $array[]) = [1, 2, 3];
var_dump($array);
上面的代碼會返回一個數組:$array == [1, 2, 3] 而不是之前的 [3, 2, 1]
注意:只是賦值的順序發生變化,賦的值還是和原來一樣的。
list($a, $b, $c) = [1, 2, 3]; // $a = 1; $b = 2; $c = 3;
和原來的行為還是一樣的。
二、空的list()賦值不再允許。
list() = $a;
list(,,) = $a;
list($x, list(), $y) = $a;
上面的這些代碼運行起來會報錯了。
三、list()不在支持字符串拆分功能
$string = "xy";
list($x, $y) = $string;
這段代碼最終的結果是:$x == null and $y == null (不會有提示)
PHP5運行的結果是:
$x == "x" and $y == "y".
四、除此之外,list()現在也適用于數組對象:
list($a, $b) = (object) new ArrayObject([0, 1]);
PHP7結果:
$a == 0 and $b == 1.
PHP5結果:
$a == null and $b == null.
PHP7其他修改
CURL模塊:禁止禁用CURLOPT_SAFE_UPLOAD選項,通過curl上傳文件必須使用curl_file/CURLFILE接口。
DATE模塊:mktime()和gmmktime()函數移除了$is_dst parameter參數。
DBA模塊:dba_delete() 如果在inifile里面沒有找到key的時候會返回false。
GMP模塊:必須用libgmp 4.2版本以上。gmp_setbit() and gmp_clrbit()如果傳入的index為負數的話,會返回false。
Intl模塊:移除了別名函數datefmt_set_timezone_id() 和IntlDateFormatter::setTimeZoneID(),用datefmt_set_timezone() 和IntlDateFormatter::setTimeZone()
libxml模塊:新增ibxml 2.9.0引入的LIBXML_BIGLINES 選項,并在錯誤報告中增加了行號> 16-bit的支持。
Mcrypt模塊:.移除了mcrypt_generic_end() mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() 和mcrypt_ofb()
Opcache:移除了opcache.load_comments配置項,現在注釋加載總是被激活的。
OpenSSL:移除了"rsa_key_size"、"CN_match" 、"SNI_server_name" 選項。
PCRE:移除了 /e (PREG_REPLACE_EVAL) 修飾符的支持,使用preg_replace_callback()來代替。
PDO_pgsql:刪除了PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT選項。
Standard:刪除了setlocale()函數里面對字符串類型的支持,使用LC_*常量。刪除了set_magic_quotes_runtime() magic_quotes_runtime().
JSON:json_decode()會拒絕與RFC 7159不兼容的數字格式。json_decode第一個參數是空值的時候會返回json語法錯誤。
Stream:刪除別名函數set_socket_blocking()
XSL:刪除xsl.security_prefs 選項。
session
session_start()可以接受所有的INI設置,可以用數組的方式傳入,比如:['cache_limiter'=>'private']
save handler接受validate_sid(), update_timestamp() ,可用來檢查sid是否存在,更新session數據的時間戳。
增加了SessionUpdateTimestampHandlerInterface,這個接口里面定義了validateSid(), updateTimestamp()方法。
session.lazy_write(default=On) 配置項可以允許只有session數據有變化時才寫數據。
PHP 7 Session 選項
PHP 7 session_start()函數可以接收一個數組作為參數,可以覆蓋php.ini中session的配置項。
這個特性也引入了一個新的php.ini設置(session.lazy_write),默認情況下設置為 true,意味著session數據只在發生變化時才寫入。
除了常規的會話配置指示項, 還可以在此數組中包含 read_and_close 選項。如果將此選項的值設置為 TRUE, 那么會話文件會在讀取完畢之后馬上關閉, 因此,可以在會話數據沒有變動的時候,避免不必要的文件鎖。
實例
把cache_limiter設置為私有的,同時在閱讀完session后立即關閉。
?php
session_start(#91;
'cache_limiter' => 'private',
'read_and_close' => true, ]);
?>
更多關于PHP相關內容感興趣的讀者可查看本站專題:《php常用函數與技巧總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:- MacOS下PHP7.1升級到PHP7.4.15的方法
- php7和php5具體區別實例講解
- PHP7原生MySQL數據庫操作實現代碼
- php7 參數、整形及字符串處理機制修改實例分析
- php7 錯誤處理機制修改實例分析
- php5.6.x到php7.0.x特性小結
- PHP7.1實現的AES與RSA加密操作示例
- php7函數,聲明,返回值等新特性介紹
- 可兼容php5與php7的cURL文件上傳功能實例分析
- php7和php5的詳細對比