」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > PHP:不,不可能

PHP:不,不可能

發佈於2024-07-31
瀏覽:170

PHP: no, it

您可以在此標題中添加“還”!有時,事情就是這樣,只是因為沒有人知道如何做得更好。

然而,這並不意味著一切都是好主意。

PHP不支援多重繼承

您根本無法執行以下操作:

class Child extends Parent1, Parent2 {}

但是,許多開發人員認為有更好的方法,例如使用介面強制類別實作特定行為。

請注意,您仍然可以對這些介面應用某種多重繼承(如果這對您的情況確實有意義):

interface A {}
interface B {}
interface C extends A, B {}

然而,對我來說,這並不是反對多重繼承的最佳論點。許多程式語言注重簡單性和可讀性而不是複雜性。

引入多重繼承可能會導致很多誤用,更不用說鑽石問題了,這對 PHP 等高階語言來說會是個問題。

最好能夠避免不必要的複雜性。

PHP不支援多執行緒

許多程式語言提供內建工具來同時執行多個執行緒(例如 Java、C )。

Pthreads 試圖在 PHP 中引入多線程,但 pthreads 和並行的創建者 Joe Watkins 在 2019 年 2 月宣布:

由於架構缺陷,PHP 7.4 之後將不再維護 pthreads。

來源:PHP 文件 - phtreads

如果你想進一步挖掘,你可以檢查parallel,它的靈感來自Go並發。

雖然並行非常酷,但您的情況真的需要如此複雜嗎?

如果您需要非同步處理的內建機制,現在可以使用 Fibers(自 PHP 8.1 起)。

Fibers 可讓您編寫可中斷的函數。

雖然 Fibers 非常酷,但您的情況真的需要如此複雜嗎?

使用 ReactPHP 或 Swoole 等第三方解決方案可能是更好的選擇,特別是當您只需要事件循環時。

更好的是,您可以建立一個可以處理訊息並重試失敗作業的佇列機制。

Symfony 元件 HTTP 用戶端也支援各種非同步操作(例如並發非同步流程和多路復用請求/回應)。

PHP 不適合即時處理

PHP是解釋型語言,不相容密集操作和需要低延遲、高可預測性的系統。

雖然確實如此,但為什麼要使用 PHP 進行高頻交易、串流媒體、線上遊戲或機器和流程的高級監控?

包起來

PHP 適用於網路以及您可能知道的許多其他創意用途。

我希望它能保持簡單性,因為它絕對是一個功能。

版本聲明 本文轉載於:https://dev.to/spo0q/php-no-its-not-possible-4ji6?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    在嘗試為JavaScript對象創建動態鍵時,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正確的方法採用方括號: jsobj ['key''i] ='example'1; 在JavaScript中,數組是一...
    程式設計 發佈於2025-03-25
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    程式設計 發佈於2025-03-25
  • Numpy的矢量函數如何有效地證明數組的合理性?
    Numpy的矢量函數如何有效地證明數組的合理性?
    使用向量函數 Numpy提供使用矢量化函數的數組合理的方法,提供改進的性能和代碼簡單性,與傳統的python循環相比,提供了改進的性能和代碼簡單性。在保持其形狀的同時,左,右,向上或向下的非零元素。 以下numpy實現執行有效的理由: = a [mask] 別的: out.t...
    程式設計 發佈於2025-03-25
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在時間戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源於遺留實現的關注,這些限制需要對當前的_timestamp功能進行特定的實現。 創建表`foo`( `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-03-25
  • 如何基於唯一的電子郵件值合併和重塑對像數組?
    如何基於唯一的電子郵件值合併和重塑對像數組?
    在數據操作領域中合併和將對象的數組與唯一的電子郵件值 考慮需要合併兩個對象陣列,每個對像都包含電子郵件屬性。目標是創建一個包含所有唯一電子郵件值的新數組。 , (對象)[“電子郵件” =>“ [電子郵件  prected]”], (對象)[“電子郵件” =>“ wef...
    程式設計 發佈於2025-03-25
  • 為什麼不使用CSS`content'屬性顯示圖像?
    為什麼不使用CSS`content'屬性顯示圖像?
    在Firefox extemers屬性為某些圖像很大,&& && && &&華倍華倍[華氏華倍華氏度]很少見,卻是某些瀏覽屬性很少,尤其是特定於Firefox的某些瀏覽器未能在使用內容屬性引用時未能顯示圖像的情況。這可以在提供的CSS類中看到:。 googlepic { 內容:url(&...
    程式設計 發佈於2025-03-25
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-03-25
  • 如何在鼠標單擊時編程選擇DIV中的所有文本?
    如何在鼠標單擊時編程選擇DIV中的所有文本?
    在鼠標上選擇div文本單擊帶有文本內容,用戶如何使用單個鼠標單擊單擊div中的整個文本?這允許用戶輕鬆拖放所選的文本或直接複製它。 在單個鼠標上單擊的div元素中選擇文本,您可以使用以下Javascript函數: function selecttext(canduterid){ if(d...
    程式設計 發佈於2025-03-25
  • 對象擬合:IE和Edge中的封面失敗,如何修復?
    對象擬合:IE和Edge中的封面失敗,如何修復?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    程式設計 發佈於2025-03-25
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-03-25
  • 如何將MySQL數據庫添加到Visual Studio 2012中的數據源對話框中?
    如何將MySQL數據庫添加到Visual Studio 2012中的數據源對話框中?
    在Visual Studio 2012 儘管已安裝了MySQL Connector v.6.5.4,但無法將MySQL數據庫添加到實體框架的“ DataSource對話框”中。為了解決這一問題,至關重要的是要了解MySQL連接器v.6.5.5及以後的6.6.x版本將提供MySQL的官方Visual...
    程式設計 發佈於2025-03-25
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-03-25
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-03-25
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-03-25
  • 如何在php中使用捲髮發送原始帖子請求?
    如何在php中使用捲髮發送原始帖子請求?
    如何使用php 創建請求來發送原始帖子請求,開始使用curl_init()開始初始化curl session。然後,配置以下選項: curlopt_url:請求 [要發送的原始數據指定內容類型,為原始的帖子請求指定身體的內容類型很重要。在這種情況下,它是文本/平原。要執行此操作,請使用包含以下標頭...
    程式設計 發佈於2025-03-25

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3