ホームページ > バックエンド開発 > PHPチュートリアル > PHP: いいえ、それはできません

PHP: いいえ、それはできません

WBOY
リリース: 2024-07-19 14:14:01
オリジナル
810 人が閲覧しました

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 以降は pthread が維持されなくなります。

出典: PHP ドキュメント - phtreads

さらに詳しく知りたい場合は、Go の同時実行性に着想を得た並列を確認してください。

並列は非常に優れていますが、あなたのケースでは本当にそのような複雑さが必要ですか?

非同期処理用の組み込みメカニズムが必要な場合は、Fibers で実現できるようになりました (PHP 8.1 以降)。

ファイバーを使用すると、割り込み可能な関数を作成できます。

Fiber は非常に優れていますが、あなたのケースでは本当にそのような複雑さが必要ですか?

特にイベント ループのみが必要な場合は、ReactPHP や Swoole などのサードパーティ ソリューションを使用する方が良い選択となる可能性があります。

それよりも良いのは、メッセージを処理して失敗したジョブを再試行できるキュー メカニズムを構築することです。

Symfony コンポーネントの HTTP クライアントは、さまざまな非同期操作 (同時の非同期ストリーミングおよび多重化されたリクエスト/レスポンスなど) もサポートしています。

PHP はリアルタイム処理を目的としていません

PHP はインタープリタ型言語であるため、低遅延と高い予測可能性を必要とする集中的な操作やシステムとは互換性がありません。

それは真実ですが、なぜ高頻度取引、ストリーミング、オンライン ゲーム、またはマシンやプロセスの高レベルの監視に PHP を使用するのでしょうか?

まとめ

PHP は、Web やその他多くの創造的な用途を目的としています。

これは間違いなく機能なので、そのシンプルさが維持されることを願っています。

以上がPHP: いいえ、それはできませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート