PHP7.2 版本效能介紹
本文主要和大家詳細介紹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_path, session.cookie_lifetime,session.cookie_path,session.cookie_domain,session.cookie_httponly,session.cookie_secure,session.use_cookies,session.use_only_cookies,session.use_strict_mode,session.referer_check, session.cache_limiter,session.cache_expire,session.lazy_write#,session. save_handler,session.serialize_handler,session.gc_probability,session.gc_pior,session.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_IGNORE和JSON_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_cost ,time_cost。這些選項的預設值是PASSWORD_ARGON2_DEFAULT_MEMORY_COST。如果沒有設置,則預設是PASSWORD_ARGON2_DEFAULT_TIME_COST和PASSWORD_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()和
。
-
SPL
增加了
#。
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
設定選項。
將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_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控制台模式。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。