首頁  >  文章  >  PHP7.2 版本效能介紹

PHP7.2 版本效能介紹

小云云
小云云原創
2018-05-14 13:49:5811847瀏覽

本文主要和大家詳細介紹PHP7.2 版本效能,希望能幫助大家對PHP7.2有更清晰的認識。

1. 不向後相容的變更

Core:

  • 對於封閉資源來說,gettype()函數將傳回# resource(closed),取代先前的unknown type#。

  • 對於__PHP_Incomplete_Class類別物件來說,#is_object ()函數將傳回true。

  • 移除對Netware作業系統的支援。

  • array型別轉換成object型別((object)settype() )時,將把整數鍵轉換成屬性名,這修復了先前版本的數字鍵不能作為屬性名的問題。

  • object型別轉換成array型別((array)settype() )時,以及物件的屬性對應到陣列中(get_object_vars()#)時,會把整數屬性轉換成數字鍵,這修正了先前版本的整數屬性不可存取的問題。

  • 對未定義常數的非限定性引用將導致一個waring級別的錯誤,取代之前的notice級別,之後的版本會是error級別的錯誤。

  • 支援的最低的Windows版本是Windows 7和Windows Server 2008 R2。

  • 取消了原生trait屬性值的相容性檢查行為。

  • object#將不能被用作類別名稱。

BcMath

  • fmod()函數一樣,bcmod()函數取消了取模運算(%),也就是數值的小數部分截斷變成整數。例如:bcmod('4','3.5')將回傳0.5而不是1。

Hash

  • hash_hmac ()hash_hmac_file()hash_pbkdf2()以及hash_init() (options參數為HASH_HMAC時),這些函數將不再支援非加密的雜湊函數。

JSON

  • json_decode()函數的第二個參數assoc是null時,options支援選項中的JSON_OBJECT_AS_ARRAY會啟用,在之前的版本中這個參數是我們一直忽略的。

Session

  • 。除了register_globals相關的程式碼,"!"可以用在$_SESSION##的鍵名中。

  • session#被用來正確的管理會話狀態,禁止無效操作,當程式碼有問題時將會觸發該變化。如果你不幸遇到了這個問題,這表示你的程式碼是有問題的。

    • sesseion_start()session_status()session_regenerate_id(),這些函數被用來設定或傳回正確的會話狀態。

    • session_unset()session_write_close()/ session_commit()session_abort()session_reset(),這些函數傳回從沒有傳回值變成返回布林值。他們允許允許空的參數,並且會對這些空的檢查進行檢查。

    • session_start()session_set_cookie_params()session_name()session_module_name()session_set_save_handler()##session_regenerate_id()session_cache_limiter()session_cache_expire()#session_cache_expire()#,session_unset()session_destroy()session_write_close()#/# session_commit()

    • session_reset()
    • ,這些函數會禁止無效的會話狀態和http頭狀態,傳回正確的布林值或數值。 session.name#,session.save_pathsession.cookie_lifetime,session.cookie_pathsession.cookie_domainsession.cookie_httponlysession.cookie_securesession.use_cookiessession.use_only_cookiessession.use_strict_modesession.referer_check session.cache_limitersession.cache_expiresession.lazy_write#,session. save_handlersession.serialize_handlersession.gc_probabilitysession.gc_piorsession.gc_maxlifetime,這些ini的值的設定需透過

    • ini_set()
    • 函數的成功調用,無效的ini修改操作將不會成功。 由於會話能夠被正確管理(session_start()),部分##E_ERROR 層級的錯誤訊息將轉換成

      E_WARNING
    • 等級。

    • 會話將不再被無效的、無用的會話初始化

      當頭部訊息已經被傳送,此時去設定新的ini值將無效(透過session_name()session_module_name()session_save_path()session_cache_limiter()

      session_cache_expire()

      這些函數)。


      現在這些正確的行為會影響到cli命令列模式中管理會話的狀態。使用輸出緩衝,就像是在網頁應用程式那樣將解決在cli腳本下的問題。

Standard自7.1版本以來,在64位元機器上,同一個種子的mt_rand()

rand()

產生的隨機數順序可能會不一樣。

2.新功能

    Core
  • ######當重寫一個方法和介面時,其參數類型是可省略的。這遵從了里氏平衡原則的參數類型的逆變。 ######
  • 允許繼承後的抽象類別來重寫被繼承的抽象類別的抽象方法。

  • 允許分組命名空間的尾部逗號。

  • 物件類型的註解是允許的。

DBA

  • 實現了對LMDB後端的支援。

JSON

  • json_encode()json_decode()增加了對JSON_INVALID_IGNOREJSON_INVALTD_UTF8_SUBSTITUTE的支持,取代了先前的utf-8編碼的無效型別。

OCI8

  • 增加了Oracle資料庫的透明應用故障切換(TAF)的支援。

PCRE

  • 增加了內部選項(j)修改本地的PCRE_DUPNAMES選項。

Sodium

  • 新的加密擴充。

SQLite3

  • 實現了寫入BLOBs。

Standard

  • #當使用libargon2來編譯PHP時,簡化的雜湊密碼的API已更新,用來支援Argon2。

  • windows平台支援proc_nice()函數。

Zip

  • 讀/寫入加密存檔,依賴libzip 1.2.0,   新的方法:        ZipArchive:: setEncryptionName($ name,$ method ,$ password]);   新的常數:       ZipArchive:: EM_NONE       Zip ipArchive:: EM_AES_256 

  • 從zip流上下文接受"密碼"。

  • ZipArchive實作可計數,增加ZipArchive::count()#方法。

3. SAPI模組變更

4. 廢棄的功能

以下是將要在php8.0版本中廢棄的功能。

Core

  • #設定檔的磁軌錯誤將會被廢棄。

  • __autoload()將被廢棄,使用spl_autoload_register() 來替代。

  • (unset)將被廢棄,此項目變更不會影響unset ($var)的語言結構。

  • #create_function()函數將被廢棄,並使用匿名函數來取代。

  • each()函數結構將被廢棄,使用foreach()循環來替代。

Exif

  • read_exif_data ()將被廢棄,使用exif_read_data()#來取代。

GD

#
  • png2wbmp()#和jpeg2wbmp()將會被廢棄。

GMP

  • gmp_random ()將被廢棄,使用gmp_random_bits()或()來取代。

Intl

  • INTL_IDNA_VARIANT_2003 將被廢棄,使用INTL_IDNA_VARIANT_UTS46來取代。

Mbstring

  • mbstring .func_overload的設定檔將被廢棄。

Standard

  • #參數來呼叫parse_str()將會被廢棄。

  • 用字串參數來呼叫assert()將被廢棄,並使用常規表達式來取代。

5. 變更的函數

Standard

  • 當設定為PASSWORD_ARGON2I時,password_hash()可以產生Argon2散列。

  • 當使用PASSWORD_ARGON2I時,以下這些選項可能預設被設定:memory_costtime_cost。這些選項的預設值是PASSWORD_ARGON2_DEFAULT_MEMORY_COST。如果沒有設置,則預設是PASSWORD_ARGON2_DEFAULT_TIME_COSTPASSWORD_ARGON2_DEFAULT_THREADS

  • #password_verify()可以驗證Argon2雜湊。

  • #password_get_info()password_needs_rehash()可以接受Argon2哈希值。

  • mail()/mb_send_mail()接受陣列$extra_header 。數組參數是針對RFC 2822進行檢查的。 陣列格式: php $extra_headers = [ 'Header-Name' => 'Header value', 'Multiple' => ['One header','Another header'], 'Multiline' = " FirstLine\r\n SecondLine", ]; 

  • #當傳遞一個無效參數時,count() 函數將拋出warning警告。

  • 大端和小端的位元組序列下,pack() unpack()支援float和double型別。

  • number_format()函數將確保零值不包含負號。

XML

  • utf8_encode ()utf8_decode() 函數已被當作字串移至標準擴充。

6. 新增的函數

Core

  • 增加stream_istty()

  • #增加sapi_windows_vt100_support()

DOM

  • DomNodeList 實作了Countable,增加了DomNodeList::count()#。

  • DOMNamedNodeMap實作了Countable,增加了DOMNamedNodeMap :: count()

FTP

  • #增加了ftp_append()

GD

  • #增加了imagesetclip()imagegetclip()

  • 增加了imageopenpolygon()

  • 增加了#imageresolution()

  • 增加了#imagecreatefrombmp()imagebmp( )

Hash

  • #增加了hash_hmac_algos()

Mbstring

  • 增加了mb_chr()mb_ord()

  • 增加了#mb_scrub

OCI8

  • 增加了oci_register_taf_callback()oci_unregister_taf_callback()對Oracle資料庫的透明應用故障切換(TAF)的支援。

Sockets

  • 增加了socket_addrinfo_lookup()socket_addrinfo_connect()socket_addrinfo_bind()#socket_addrinfo_bind()

#socket_addrinfo_explain()

  • SPL

    增加了
spl_object_id()

#。

7. 新增的類別與介面

8. 移除的擴充與SAPI

  • Mcypt

#已廢棄的mcrypt擴充已移至PECL。

    libmcrypt自2007年開始就沒有維護,不建議繼續使用這個擴充。
  • 9. 其他對擴充功能的變更
  • ##EXIF

    #增加了對以下格式的exif標籤支援:Samsung,DJI,Panasonic,Sony,Pentax,Minolta,Sigma/Foveon, AGFA,Kyocera,Ricoh & Epson。

exif_read_data()
  • exif_t​​ humbnail()支援第一個參數是傳遞流。

  • GD
  • #。除了
  • --enable-gd-native-ttf

    設定選項。

imagegd()

將truecolor影像儲存為真彩色影像,取代了先前的轉換為調色板。

  • 在使用系統libgd編譯時,

    mageantialias()也支援。

  • Mbstring

    ######mb_check_encoding ()######接受陣列參數,遞迴檢查其鍵和值。 ########################mb_convert_encoding()######接受陣列參數,其值的編碼可以遞歸地轉換。 ######

PDO_OCI

  • --with-pdo-oci 的設定語法將不再Oracle客戶端。

pdo_sqlite

  • 使用sqlite3_prepare_v2()sqlite3_close_v2()來取代他們之前的函數。

10. 新增全域常數

Core

  • PHP_FLOAT_DIG

  • ##PHP_FLOAT_EPSILON

  • #PHP_FLOAT_MIN

  • #PHP_FLOAT_MAX

  • #PHP_OS_FAMILY

Fileinfo

  • FILEINFO_EXTENSION

GD

  • IMG_EFFECT_MULTIPLY

  • IMG_BMP

PCRE

  • PREG_UNMATCHED_AS_NULL

  • Standard:

#PASSWORD_ARGON2_DEFAULT_MEMORY_COST

PASSWORD_ARGON2_DEFAULT_TIME_COST

#PASSWORD_ARGON2_DEFAULT_TIME_COST#PASSWORD_ARGON2_DEFAULT_TIME_COST

  • ##PASSWORD_ARGON2_DEFAULT_THREADS

    #PASSWORD_ARGON2I

#11. INI檔案處理的變更

  • sql.safe_mode

該INI選項已移除。

  • realpath_cache_size

#預設是4096k。

  • opcache.fast_shutdown

該INI選項已經移除。 fast_shutdown處理的一種變型已經被整合到PHP內核,在生產環境中將預設為開啟。

12. Windows支援

  • 支援VT100控制台模式。


13. 其他變更

編譯系統

############autoconf最低支援版本是2.64。 ###############相關推薦:############Win10下如何安裝IIS、MySQ、nginx、php7.1.7? ############PHP7中新功能簡介#############17 效能翻倍的關鍵######################################
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn