php7中的php,php8 php7

本文目錄一覽:

php7中的php-fpm默認安裝在什麼地方

安裝後的PHP7配置文件所在路徑是 /usr/local/php7/etc 。該目錄下會有兩個配置文件: php-fpm.conf 和 php.ini ,以及一個文件夾 php-fpm.d (包含 文件)。

Php7有哪些新特性

PHP 7.4 的主要特性包括以下幾個,

短閉包函數(short closure) 預加載提交性能 屬性類型限定 Improved type variance(不會翻譯) 三元運算簡寫 數組展開運算 新增類的魔術方法:serialization 數字分隔符 運算優先順序 允許在__toString中拋出異常 支持反射引用 新增位元組分割函數 移除php短標籤 棄用左關聯運算符 不再向後兼容的變更 短閉包函數

短閉包函數可以減少冗餘代碼:

array_map(function (User $user) {      return $user-id;  }, $users) array_map(fn(User $user) = $user-id, $users)

需要注意幾點:

短閉包可以直接訪問閉包函數外面的變量,所以不需要再寫?use?關鍵詞 以fn關鍵詞開始 $this?可以像普通的閉包一樣使用 短閉包只有一行代碼,僅僅做返回聲明使用,不允許使用return?關鍵詞

還可以使用更嚴格類型的方式

$ids = array_map(fn(User $user): int = $user-id, $user); 預加載

PHP預加載可以極大的提高性能

優點:在PHP 7.4以前,如果你使用了框架來開發,每次請求文件就必須加載和重新編譯。預加載在框架啟動時在內存中加載文件,而且在後續請求中永久有效。

缺點:性能的提升會在其他方面花費很大的代價,每次預加載的文件發生改變時,框架需要重新啟動。

屬性類型限定 class A { public string $name; public Foo $foo; }

不得不說,PHP越來越接近Java等強類型語言

Improved type variance

協變返回類型:

class ParentType {} class ChildType extends ParentType {} class A { public function covariantReturnTypes(): ParentType { /* … */ } } class B extends A { public function covariantReturnTypes(): ChildType { /* … */ } }

依賴(是不是很熟悉):

class ParentType {} class ChildType extends ParentType {} class A { public function covariantReturnTypes(): ParentType { /* … */ } } class B extends A { public function covariantReturnTypes(): ChildType { /* … */ } } 簡寫三元運算符

在目前 PHP 7以後的寫法:

$data[‘date’] = $data[‘date’] ?? new DateTime(); 在PHP 7.4你可以這樣寫: $data[‘date’] ??= new DateTime(); 數組展開運算

合併數組到另一個數組中,返回一維數組

$arrayA = [1, 2, 3]; $arrayB = [4, 5]; $result = [0, …$arrayA, …$arrayB, 6 ,7]; // [0, 1, 2, 3, 4, 5, 6, 7]

注意? :只對數字索引有效

新增類的魔術方法

RFC添加了兩個新的魔術方法__serialize和__unserialize

數字分隔符

允許使用下劃線更直觀的分隔數值

$unformattedNumber = 107925284.88; $formattedNumber = 107_925_284.88; 運算優先順序

PHP 7.4之前,如果你這樣寫:

echo “sum: ” . $a + $b; PHP會解析為: echo (“sum: ” . $a) + $b; PHP 8將會解析為: echo “sum :” . ($a + $b); __toString中拋出異常支持反射引用

PHP 7.4將會新增ReflectionReference?類

移除php短標籤

?將會在PHP 8中移除,?=會繼續保留

棄用左關聯運算符

PHP遺留了一些奇怪的怪癖,比如

1 ? 2 : 3 ? 4 : 5; // 將會在 PHP 7.4 中廢棄,在 PHP 8中會拋出編譯錯誤 (1 ? 2 : 3) ? 4 : 5; // 正確 不再向後兼容的變更 棄用在沒有父類的情況下調用parent:: 調用var_dump打印DateTime和DateTimeImmutableshi』實例,將不再保留對象上的可訪問屬性 openssl_random_pseudo_bytes?會在調用錯誤時拋出異常 序列化PDO和PDOStatement?實例將會生成一個Exception而不是PDOException異常 調用get_object_vars()打印ArrayObject?實例將會返回ArrayObject?自己的屬性,而不是被包裹的數組或對象的值,

數組強制轉換不受影響

PHP7如何在php.ini文件中開啟自動轉義功能? php.ini中不包含magic-quote

首先說明下magic-quote在PHP5.4版本中就已經廢除了。詳情請參考:

1. magic_quotes_gpc和magic_quotes_runtime作用

magic_quotes_gpc主要是作用是自動轉義GET/POST/COOKIES請求的數據,也就是自動執行 addslashes()。magic_quotes_gpc在5.4版本之前的配置中有兩個值,分別是0(關閉)和1(開啟),默認配置是1(開啟)。

magic_quotes_runtime主要作用是自動轉移sql,為了防止惡意攻擊獲取數據庫信息。magic_quotes_runtime在5.4版本前的配置也有兩個值,分別是0(關閉)和1(開啟),默認配置是0(關閉)。

2. magic_quotes_gpc和magic_quotes_runtime的應用

假設提交過來的數據分別是$datastr= ‘aaa’;  $datafile= implode(file(‘demo.txt’));第一個數據是一個字符串,第二個是讀取的文件信息,但是你不知道是否安全。就可以使用get_magic_quotes_gpc()和get_magic_quotes_runtime()進行判斷。

應用示例

注意:一般來說為了運行效率會將get_magic_quotes_gpc()和get_magic_quotes_runtime()設置成常量進行判斷

應用示例

原創文章,作者:RZAI,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/142336.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RZAI的頭像RZAI
上一篇 2024-10-11 11:41
下一篇 2024-10-11 11:41

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台服務器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24
  • PHP導出Excel文件

    一、PHP導出Excel文件列寬調整 當我們使用PHP導出Excel文件時,有時需要調整單元格的列寬。可以使用PHPExcel類庫中的setWidth方法來設置單元格的列寬。下面是…

    編程 2025-04-24
  • php擴展庫初探

    一、什麼是php擴展庫? PHP擴展庫(PHP extension)是一些用C語言編寫的動態鏈接庫,用於擴展PHP的功能。PHP擴展庫使得PHP可以與各種數據庫系統相連、SMTP、…

    編程 2025-04-23

發表回復

登錄後才能評論