2013-01-06 1 views
2

젠드 PHP 프로젝트에서 작업 중이며 코드를 사용자 정의 라이브러리 (예 : "사용자 정의")로 분리하려고합니다. 현재 이것은 주로 사용자 정의 양식으로 구성됩니다.Zend의 사용자 정의 라이브러리 자동로드 1.12

내 폴더 구조는 다음과 같습니다.

/project root 
/Library 
    /Custom 
    /Forms 
     /Account 
     /Login.php 
     Base.php 
    /Zend 
    ... 

는 Login.php 및 Base.php는 다음과 같은 명명 규칙이 마지막으로

class Custom_Form_Account_Login extends Custom_Form_Base 
{ 

} 

class Custom_Form_Base extends Zend_Form 
{ 

} 

을, 나는에

autoloaderNamespaces[] = "Custom_" 

그럼 내 application.ini 파일에 다음 줄을 배치 양식을 만들려면 콘트롤러에 ...

$form = new Custom_Form_Account_Login(); 

그러나 페이지를로드 할 때 Custom_Form_Account_Login을 찾을 수 없다는 오류가 표시됩니다. 포함 경로가 표시되고 "/ project root/Library"가 표시되어 클래스가 발견되지 않는 이유에 대해 약간 혼란스러워 보입니다.

application.ini에서 여러 행을 시도했지만 변경시 서버를 다시 시작했지만 오류가 계속 발생합니다. 내가 해봤

다른 라인은 다음과 같습니다 : 나는 젠드 1.12를 사용하고 언급 한 바와 같이

autoloadernamespaces[] = "Custom_" //All lowercase 
autoloaderNamespaces[] = "Custom" //Without the underscore 
autoloaderNamespaces.custom = "Custom_" 
autoloaderNamespaces.0 = "Custom_" 

. 나는 이것을 .ini 파일에 설정하는 것이 이상적이다.

답변

4

폴더 이름은 Forms (복수)이지만 클래스 이름은 Form (단수)입니다. 당신이 묘사하고있는 맥락에서, 이들은 동일 할 필요가 있습니다. Form (단수)은 ZF 구조를 반영하기 때문에 아마 더 좋습니다.

+0

감사합니다. 처음에는/root 폴더/appliation 아래에서 똑같은 구조를 가졌으므로 처음에는 분리 된 라이브러리로 옮기고 괜찮다고 생각 했으므로 괜찮을 것이라고 생각했습니다. 나는 그것이 왜 응용 프로그램 폴더 아래에 괜찮 았는지 궁금해? 건배! – cast01

+1

'application' 폴더에서 작동하는 이유는 접두사/경로 매핑 묶음을 만드는 호출 된 자원 자동 로더가 있다는 것입니다. 'Zend_Application_Module_Autoloader' 클래스를 확인하십시오. 감사와 환호! –

+0

아, 더 설명해 주셔서 감사합니다. :) – cast01

관련 문제