「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP: いいえ、それはできません

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

2024 年 7 月 31 日に公開
ブラウズ:818

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 月に次のように発表しました:

pthreads は、アーキテクチャ上の欠陥のため、PHP 7.4 以降は保守されなくなります。

ソース: PHP ドキュメント - phtreads

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

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

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

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

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

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

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

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

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

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

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

まとめ

PHP は、Web やその他の多くのクリエイティブな用途を目的としています。

これは間違いなく機能なので、そのシンプルさを維持してほしいと思います。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/spo0q/php-no-its-not-possible-4ji6?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3