"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PHP: 아니요, 불가능합니다

PHP: 아니요, 불가능합니다

2024-07-31에 게시됨
검색:396

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월에 다음과 같이 발표했습니다.

pthread는 아키텍처 결함으로 인해 PHP 7.4 이후 더 이상 유지되지 않습니다.

출처: PHP 문서 - phtreads

더 자세히 알아보고 싶다면 Go 동시성에서 영감을 받은 병렬을 확인해 보세요.

병렬은 꽤 멋지지만, 귀하의 경우에는 그러한 복잡성이 정말로 필요합니까?

비동기 처리를 위한 내장 메커니즘이 필요한 경우 이제 Fibers(PHP 8.1부터)를 사용하면 가능합니다.

파이버를 사용하면 중단 가능한 함수를 작성할 수 있습니다.

Fibers는 매우 멋지지만 귀하의 경우에는 그러한 복잡성이 정말로 필요합니까?

ReactPHP 또는 Swoole과 같은 타사 솔루션을 사용하는 것이 더 나은 선택이 될 수 있습니다. 특히 이벤트 루프만 필요한 경우에는 더욱 그렇습니다.

그보다 더 나은 점은 메시지를 처리하고 실패한 작업을 재시도할 수 있는 대기열 메커니즘을 구축할 수 있다는 것입니다.

Symfony 구성 요소 HTTP 클라이언트는 다양한 비동기 작업(예: 동시 비동기 스트리밍 및 다중화된 요청/응답)도 지원합니다.

PHP는 실시간 처리를 위한 것이 아닙니다

PHP는 해석된 언어이므로 짧은 대기 시간과 높은 예측 가능성이 요구되는 집약적인 작업 및 시스템과 호환되지 않습니다.

그렇지만 고주파 거래, 스트리밍, 온라인 게임 또는 기계 및 프로세스에 대한 높은 수준의 감독을 위해 PHP를 사용하는 이유는 무엇입니까?

마무리

PHP는 웹 및 기타 다양한 창의적인 용도로 사용됩니다.

확실히 특징인 만큼 단순함을 유지했으면 좋겠습니다.

릴리스 선언문 이 글은 https://dev.to/spo0q/php-no-its-not-possible-4ji6?1 에서 복제하였습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제해 주시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3