Sie können diesem Titel „noch“ hinzufügen! Manchmal sind die Dinge so, wie sie sind, einfach weil niemand weiß, wie man es besser machen kann.
Das bedeutet jedoch nicht, dass alles eine gute Idee ist.
Sie können Folgendes einfach nicht tun:
class Child extends Parent1, Parent2 {}
Viele Entwickler würden jedoch denken, dass es bessere Ansätze gibt, wie etwa die Verwendung von Schnittstellen, um Klassen zu zwingen, bestimmte Verhaltensweisen zu implementieren.
Beachten Sie, dass Sie möglicherweise immer noch eine Art Mehrfachvererbung auf diese Schnittstellen anwenden (sofern das in Ihrem Fall wirklich Sinn macht):
interface A {} interface B {} interface C extends A, B {}
Für mich ist das jedoch nicht das beste Argument gegen eine Mehrfachvererbung. Viele Programmiersprachen legen den Schwerpunkt auf Einfachheit und Lesbarkeit statt auf Komplexität.
Die Einführung der Mehrfachvererbung könnte zu vielen Missbräuchen führen, ganz zu schweigen vom Diamonds-Problem, das für Hochsprachen wie PHP problematisch wäre.
Am besten ist es, wenn Sie unnötige Komplexität vermeiden können.
Viele Programmiersprachen bieten integrierte Tools, um mehrere Threads gleichzeitig auszuführen (z. B. Java, C).
Pthreads hat versucht, Multithreading in PHP einzuführen, aber Joe Watkins, der Erfinder von pthreads und parallel, gab im Februar 2019 Folgendes bekannt:
pthreads werden nach PHP 7.4 aufgrund von Architekturfehlern nicht mehr gepflegt.
Quelle: PHP-Dokumentation – phtreads
Wenn Sie weiter graben möchten, können Sie sich Parallel ansehen, das von Go-Parallelität inspiriert ist.
Parallelität ist zwar ziemlich cool, aber brauchen Sie in Ihrem Fall wirklich eine solche Komplexität?
Wenn Sie einen integrierten Mechanismus für die asynchrone Verarbeitung benötigen, ist dies jetzt mit Fibers (seit PHP 8.1) möglich.
Mit Fasern können Sie unterbrechbare Funktionen schreiben.
Obwohl Fasern ziemlich cool sind, brauchen Sie in Ihrem Fall wirklich eine solche Komplexität?
Die Verwendung von Drittanbieterlösungen wie ReactPHP oder Swoole könnte eine bessere Wahl sein, insbesondere wenn Sie nur eine Ereignisschleife benötigen.
Besser noch: Sie können einen Warteschlangenmechanismus erstellen, der Nachrichten verarbeiten und fehlgeschlagene Jobs wiederholen kann.
Der Symfony-Komponenten-HTTP-Client unterstützt auch verschiedene asynchrone Vorgänge (z. B. gleichzeitige asynchrone gestreamte und gemultiplexte Anfragen/Antworten).
PHP ist eine interpretierte Sprache, die mit intensiven Vorgängen und Systemen, die eine geringe Latenz und hohe Vorhersagbarkeit erfordern, nicht kompatibel ist.
Das stimmt zwar, aber warum sollten Sie PHP für Hochfrequenzhandel, Streaming, Online-Spiele oder die Überwachung von Maschinen und Prozessen auf hoher Ebene verwenden?
PHP ist für das Web und viele andere kreative Anwendungen gedacht, die Sie vielleicht kennen.
Ich hoffe, dass es seine Einfachheit behält, da es definitiv ein Feature ist.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3