Вы можете добавить к этому заголовку слово «пока»! Иногда вещи такие, какие они есть, просто потому, что никто не знает, как сделать лучше.
Однако это не значит, что все — хорошая идея.
Вы просто не сможете сделать следующее:
class Child extends Parent1, Parent2 {}
Однако многие разработчики считают, что существуют более эффективные подходы, например, использование интерфейсов, чтобы заставить классы реализовывать определенное поведение.
Обратите внимание, что вы все равно можете применить к этим интерфейсам своего рода множественное наследование (если это действительно имеет смысл в вашем случае):
interface A {} interface B {} interface C extends A, B {}
Однако, на мой взгляд, это не лучший аргумент против множественного наследования. Многие языки программирования ориентированы на простоту и читаемость, а не на сложность.
Введение множественного наследования может привести к множеству злоупотреблений, не говоря уже о проблеме Diamonds, которая будет проблематичной для языков высокого уровня, таких как PHP.
Лучше всего, если вы сможете избежать ненужной сложности.
Многие языки программирования предоставляют встроенные инструменты для выполнения нескольких потоков одновременно (например, Java, C ).
Pthreads пыталась внедрить многопоточность в PHP, но Джо Уоткинс, создатель pthreads и Parallel, объявил в феврале 2019 года, что:
pthreads больше не будет поддерживаться после PHP 7.4 из-за архитектурных ошибок.
Источник: документация PHP — phtreads
Если вы хотите копнуть дальше, вы можете проверить параллель, вдохновленную параллелизмом Go.
Хотя параллелизм — это круто, действительно ли вам нужна такая сложность в вашем случае?
Если вам нужен встроенный механизм асинхронной обработки, теперь это возможно с помощью Fibers (начиная с PHP 8.1).
Файберы позволяют писать прерываемые функции.
Хотя волокна — это довольно круто, действительно ли вам нужна такая сложность в вашем случае?
Использование сторонних решений, таких как ReactPHP или Swoole, может быть лучшим выбором, особенно если вам нужен только цикл событий.
Более того, вы можете создать механизм очереди, который сможет обрабатывать сообщения и повторять неудачные задания.
Компонент HTTP-клиента Symfony также поддерживает различные асинхронные операции (например, одновременные асинхронные потоковые и мультиплексированные запросы/ответы).
PHP — это интерпретируемый язык, несовместимый с интенсивными операциями и системами, требующими малой задержки и высокой предсказуемости.
Хотя это правда, зачем вам использовать PHP для высокочастотной торговли, потоковой передачи, онлайн-игр или высокоуровневого контроля за машинами и процессами?
PHP предназначен для Интернета и многих других творческих целей, о которых вы, возможно, знаете.
Я надеюсь, что он сохранит свою простоту, поскольку это определенно его особенность.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3