PHP 7 修改了什麼呢 -- 2

PHP7 - use語句

從PHP7起,單次使用 use 語句能夠用來從同一個命名空間導入類,函數和常量(而不用屢次使用 use 語句)。
示例php

<?php
// Before PHP 7
use comyiibaiClassA;
use comyiibaiClassB;
use comyiibaiClassC as C;mysql

use function comyiibaifn_a;
use function comyiibaifn_b;
use function comyiibaifn_c;sql

use const comyiibaiConstA;
use const comyiibaiConstB;
use const comyiibaiConstC;apache

// PHP 7+ code
use comyiibai{ClassA, ClassB, ClassC as C};
use function comyiibai{fn_a, fn_b, fn_c};
use const comyiibai{ConstA, ConstB, ConstC};api

?>數組

PHP7 - 錯誤處理

從PHP7,錯誤處理和報告已經改變。PHP5中使用了傳統的錯誤報告機制的錯誤,如今大多數的錯誤將經過拋出異常錯誤處理。相似於異常,這些錯誤異常會冒泡,直到它們到達第一個匹配的catch塊。若是沒有匹配的塊,那麼會使用 set_exception_handler() 安裝一個默認的異常處理並被調用,並在狀況下,若是沒有默認的異常處理程序,那麼該異常將被轉換爲一個致命的錯誤,並會像傳統錯誤那樣處理。瀏覽器

因爲 Error 層次結構不是從異常(Exception),代碼擴展使用catch (Exception $e) { ... } 塊來處理未捕獲的異常,PHP5中將不會處理這樣的錯誤。 catch (Error $e) { ... } 塊或 set_exception_handler()處理程序須要處理的致命錯誤。
Exception Hiearchy
示例安全

<?php
class MathOperations
{
protected $n = 10;session

// Try to get the Division by Zero error object and display as Exception
public function doOperation(): string
{yii

try {
     $value = $this->n % 0;
     return $value;
  } catch (DivisionByZeroError $e) {
     return $e->getMessage();
  }

}
}

$mathOperationsObj = new MathOperations();
print($mathOperationsObj->doOperation());
?>

瀏覽器中將產生如下輸出-

Modulo by zero

PHP7 - 整數除法

PHP7引入了intdiv()的新函數,它執行操做數的整數除法並返回結果爲 int 類型。
示例

<?php
$value = intdiv(10,3);
var_dump($value);
print("
");
print($value);
?>

這將在瀏覽器產生如下輸出 -

int(3)
3

PHP7 - Session選項

從PHP7+,session_start()函數接受數組參數覆蓋在php.ini中設置的會話配置指令。這些選項支持 session.lazy,在默認狀況下若是PHP會話數據改變,那麼會覆蓋任何會話數據信息。
添加另外一種選擇是:read_and_close,這代表會話數據應被讀取,而後該會話應當當即被關閉不變。例如,session.cache_limiter 設置爲私有,並設置標誌使用下面的代碼片斷以後當即關閉會話。

<?php
session_start([
'cache_limiter' => 'private',
'read_and_close' => true,
]);
?>

PHP7 - 棄用的功能

如下功能已被取消,可能會在PHP的將來版本中刪除。
PHP4風格的構造函數

PHP4式構造函數,它與類的名稱相同,由於它們是在所定義類的方法,如今已過期,而且將在將來被移除。若是PHP4的構造僅僅是一個類中定義構造函數,PHP7將發出E_DEPRECATED。類實現構造函數 __construct()方法不受影響。
示例

<?php
class A {
function A() {

print('Style Constructor');

}
}
?>

這將在瀏覽器產生如下輸出 -

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; A has a deprecated constructor in...

靜態調用非靜態方法
非靜態方法靜態調用已被棄用,而且可能在未來被移除。
示例

<?php
class A {
function b() {

print('Non-static call');

}
}
A::b();
?>

這將在瀏覽器產生如下輸出 -

Deprecated: Non-static method A::b() should not be called statically in...
Non-static call

password_hash() salt 選項

password_hash()函數的salt選項已被棄用,使開發人員不會產生他們本身的(一般是不安全的)salt。函數自己生成一個加密的安全salt,在開發者沒有提供salt值時 - 所以,定製 salt 生成再也不須要了。
capture_session_meta SSL上下文選項
capture_session_meta SSL上下文選項已被棄用。 SSL元數據如今經過stream_get_meta_data()函數獲取。
PHP7已刪除的擴展
如下擴展名從PHP7起刪除

ereg

mssql

mysql

sybase_ct

PHP7已刪除的SAPI
如下SAPI從PHP7起刪除

aolserver

apache

apache_hooks

apache2filter

caudium

continuity

isapi

milter

nsapi
相關文章
相關標籤/搜索