문제

무엇인 솔루션을 것을 권장함에 파일을 프로젝트 PHP?

  1. 이 없는 수동의 통화가 필요/포함 기능-모든 짐을 통해 프로그램에서 사용 가능
  2. 패키지 가져오기 때 필요합니다.

여기에는 이 패키지 가져오기 API:

import('util.html.HTMLParser');
import('template.arras.*'); 

이 기능이 선언할 수 있습 폭발하는 문자열과 함께 점(패키지의 계층 구조음 delimeter),루프를 통해 파일을 특정 패키지(폴더)를 포함하는 그들 중 하나 또는 모든 그들의 경우 별표 기호에는 문자열의 끝이,예를 들어,('템플릿을 이용하십시오.아라스.*').

이점 중 하나에서 볼 수 있 패키지 가져오는 방법은 사용자에게 더 나은 개체 및 분해 등의 그룹입니다.

하나의 단점을 내가에서 볼 수 있는 프로그램에서 사용 가능한 방법-는 프로그램에서 사용 가능 될 수 있는 매우 크고 매우 분명하지 않/읽을 수 있습니다.

당신은 무엇을 생각할까요?

  • 어떤 장점/단점이 있습에서 이름을 각각의 이 방법은?
  • 할 수 있는 방법을위한 최고의 솔루션을 찾을 수 있 프로젝트?
  • 는 경우 어떻게 알 수 있을 것이 어떤 성능 문제는 경우 패키지의 관리를 이용하시면 됩니다.
도움이 되었습니까?

해결책

나는 __autoload ()를 광범위하게 사용합니다. 응용 프로그램에서 사용하는 Autload 함수에는 이전 클래스의 거꾸로 호환성에 대한 몇 가지 조정이 있지만 일반적으로 AutoLoad ()가 상당히 겉보기에 작동 할 수있는 새로운 클래스를 만들 때 다음과 같은 컨벤션을 따릅니다.

  • 일관된 클래스 이름 지정: 각 클래스 자체 파일의 각 클래스는 각 클래스의 이름이 밑줄로 분리 된 낙타 케이스로 명명됩니다. 이것은 클래스 경로에 맵핑됩니다. 예를 들어, some_coolclass는 클래스 디렉토리에 'some/coolclass.class.php'에지도를 맵핑합니다. 일부 프레임 워크 가이 컨벤션을 사용한다고 생각합니다.
  • 명시 적으로 외부 클래스가 필요합니다: 우리는 사용하는 외부 라이브러리의 이름 지정을 제어 할 수 없으므로 PHP의 require_once () 함수를 사용하여로드합니다.

다른 팁

가져 오기 방법은 개선이지만 여전히 필요 이상으로로드됩니다.
별표를 사용하거나 스크립트의 시작 부분에서로드함으로써 (모든 "새 클래스 이름"이전에 가져 오기 때문에 번거롭기 때문에)

나는 팬이다 __autoload() 또는 더 나은 spl_autoload_register()
여기에는 사용중인 수업 만 포함되므로 수업이있는 곳에 배려하지 않는 추가 혜택이 포함되기 때문입니다. 대학이 파일을 다른 디렉토리로 이동하면 영향을받지 않습니다.

단점은 디렉토리와 제대로 작동하기 위해 추가 논리가 필요하다는 것입니다.

Auto Load와 함께 require_once ( "../ path-to-auto-load-script.php.inc")를 사용합니다.

모든 클래스 및 INC 파일에 대한 표준 명명 컨벤션이있어 프로그래밍을 쉽게 할 수 있습니다. 현재 요청중인 클래스 이름을 결정합니다.

예를 들어, 모든 클래스에는 inc.php와 같은 특정 확장 기능이 있습니다.
(그래서 나는 그들이 /CLS 디렉토리에있을 것이라는 것을 알고 있습니다)
그리고
모든 Inc 파일은 .ht로 시작합니다 (따라서 /inc 디렉토리에있을 것입니다)

자동로드는 하나의 매개 변수를 허용합니다. ClassName은 파일의 실제로 위치를 결정하는 데 사용합니다. 반복 일단 내 대상 디렉토리가 무엇인지 알 수 있습니다. 매번 "../"하위 하위 페이지를 설명하기 위해 (나에게 자동로드를 끊는 것처럼 보였음), 마지막으로 실제 코드 파일을 찾아야합니다.

나는 강하게 하는 건 다음 대신:

모두 던져 당신의 클래스로 정적 배열,className=>filepath/classFile.자동차 부하 기능을 사용할 수 있는 로드하는 클래스입니다.

이것은 당신이 항상 부하를 최소 금액의 파일이 있습니다.이것은 또한 당신은 피해 완전히 바보 같은 클래스 이름,구문 분석다고 말했다.

면 그것은 모두 이용할 수 있습니에서 몇 가지 가속기,그리고 얻을 것입니다 당신은 훨씬 더 경우,그것은 여전히 느립,실행할 수 있는 것들을 통해'compile'프로세스,어디에 자주 사용되는 파일은 그냥 버려진 일반적인 파일을 프로그램에서 사용 가능한 참조 업데이트할 수 있습을 가리킨 정확한 장소입니다.

시작할 경우 문제로 실행하는 자동 로딩이 너무 느리게,내가 찾는 믿기 어려운,분할할 수 있습니다 그에 따라 패키지를,그리고 여러 자동 로드 기능,이 방법으로만 하위 집합의 배열은 필요한 이 작품은 최고의 경우 패키지는 정의 주위에 모듈의 소프트웨어(확인,관리,이메일,...)

나는 팬이 아닙니다 __autoload(). 많은 라이브러리 (예 : 일부 배 라이브러리)에서 개발자 소지 class_exists() 비교적 새로운 두 번째 매개 변수를 전달하지 않고. 귀하가 가진 모든 레거시 코드 도이 문제를 가질 수 있습니다. 이로 인해 경고와 오류가 발생할 수 있습니다. __autoload() 한정된.

라이브러리가 명확하고 처리 할 레거시 코드가 없다면 환상적인 도구입니다. 나는 때때로 PHP가 어떻게 행동을 관리했는지에 대해 조금 더 똑똑했으면 좋겠다. class_exists(), 나는 문제가 그 기능이 아니라 그 기능에 있다고 생각하기 때문에 __autoload().

자신의 포장 시스템을 굴리는 것은 아마도 나쁜 생각 일 것입니다. 나는 당신이 명시 적 설명서 포함 또는 자동로드 (또는 해당 문제에 대한 조합)와 함께 갈 것을 제안합니다.

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