PHP의 시스템 기능을 보다 객체 지향적으로 만들려고 시도한 사람이 있습니까?

StackOverflow https://stackoverflow.com/questions/61784

  •  09-06-2019
  •  | 
  •  

문제

PHP의 내장 함수 전체(또는 대부분)를 보다 객체 지향적인 클래스 계층 구조로 그룹화하려는 프로젝트가 있는지 궁금합니다.예를 들어, 모든 문자열 함수를 단일 문자열 클래스로 그룹화하는 등입니다.

모든 내장 함수는 전역 네임스페이스에서 계속 액세스할 수 있지만 확실히 사용성이 훨씬 쉬워지기 때문에 이것이 실제로 문제를 해결하지는 못한다는 것을 알고 있습니다(PHP 소스 코드 수준에서 수정이 이루어지지 않는 한).

도움이 되었습니까?

해결책

귀하의 질문에 대답하자면, 그렇습니다. 귀하가 말하는 내용을 정확하게 수행하는 여러 라이브러리가 있습니다.어느 것을 사용하고 싶은지는 완전히 다른 질문입니다.PHPClasses와 pear.org는 그러한 라이브러리를 찾기에 좋은 곳입니다.

업데이트:다른 사람들이 제안했듯이 SPL은 좋은 라이브러리이며 많은 내장 PHP 기능을 포함합니다.그러나 아직 래핑되지 않은 PHP 함수가 많이 있습니다.은총알 없이 우리를 가만히 두세요.

Cakephp 및 Zend(다른 프레임워크도 포함)와 같은 프레임워크를 사용하면서 그들이 자체 라이브러리를 포함하고 DB 연결과 같은 기본 기능을 프레임 작업에 구축하여 이러한 문제 중 일부를 해결하려고 시도한다는 것을 알았습니다.따라서 프레임워크는 또 다른 솔루션이 될 수 있습니다.

다른 팁

너무 자주.누군가 PHP에 OO 기능이 있다는 것을 발견하자마자 모든 것을 클래스로 래핑하고 싶어합니다.

PHP에서 OO 항목의 요점은 원하는 방식으로 솔루션을 설계할 수 있다는 것입니다.그러나 기존 함수를 객체로 래핑하는 것은 큰 이익을 얻지 못합니다.

즉, PHP의 핵심은 이미 객체 지향적이라고 할 수 있습니다.보세요 SPL.

나는 이와 같은 것이 PHP가 앞으로 나아가는 데 필수적이라고 생각합니다.주로 .Net 프로그래머이기 때문에 PHP가 100만 1개의 전역 함수를 사용하는 것이 고통스럽다는 것을 알았습니다.PHP 5.3에 네임스페이스가 있다는 것은 좋지만 자체 라이브러리가 네임스페이스를 사용하는 것은 고사하고 객체 지향적이지 않은 경우에는 별 도움이 되지 않습니다.저는 PHP를 언어로 사용하는 것을 크게 개의치 않지만 API가 너무 체계적이지 않아 완전한 점검이 필요할 것 같습니다.VB가 VB.Net이 되었을 때 겪은 일과 비슷합니다.

나는 동의하지 않습니다.객체 지향 프로그래밍은 본질적으로 절차적 프로그래밍보다 낫지 않습니다.나는 다형성 동작(상속, 재정의 메서드 등)이 필요하지 않은 한 OO를 사용해서는 안 된다고 생각합니다.객체를 코드의 간단한 컨테이너로 사용하는 것은 오버헤드를 들일 가치가 없습니다.이것은 특히 문자열은 너무 많이 사용되기 때문에 사실입니다(예:배열 키로).모든 애플리케이션은 일반적으로 일부 다형성 기능의 이점을 누릴 수 있지만 일반적으로 높은 수준입니다.String 클래스를 확장하고 싶으신가요?

또한 PHP의 이상한 함수 이름을 이해하려면 약간의 역사가 필요합니다.PHP는 표준 C 라이브러리 및 POSIX 표준을 기반으로 하며 동일한 함수 이름(strstr, getcwd, ldap_open 등)을 많이 사용합니다.이는 언어 바인딩 코드의 양을 최소화하고, 완전히 고려된 기능 세트(C에서 수행할 수 있는 모든 기능, PHP에서 수행할 수 있는 모든 것) 및 이러한 시스템 라이브러리가 고도로 최적화되도록 보장하기 때문에 실제로 좋은 것입니다(예:strchr은 일반적으로 인라인 처리되어 약 10배 더 빠릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top