>  기사  >  백엔드 개발  >  PHP: 아니요, 불가능합니다

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

WBOY
WBOY원래의
2024-07-19 14:14:01786검색

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부터)를 사용하면 가능합니다.

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

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

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

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

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

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

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

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

마무리

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

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

위 내용은 PHP: 아니요, 불가능합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.