zend-project에서 내 라이브러리 폴더의 서브 디렉토리에있는 클래스가 있습니다.(젠드 기반)에서 PHP 클래스를 찾을 수 없습니다. include_path
<?php echo get_include_path(); ?>
/Library/WebServer/Foo/application/../library:/Library/WebServer/Foo/library:/usr/share/zend-framework/library/
그래서 지금은 임의의 논리를,이 클래스를 만들 무시하려면, 내가 할 수 있어야한다 : 그래서 내 애플/라이브러리/웹 서버/푸/다음의 경로가 포함 PHP에서 말할 수 있습니다
:class MyValidator_Usernameunique extends Zend_Validate_Abstract
{
const USERNAME_ALREADY_EXISTS = 'usernameAlreadyUsed';
const DATABASE_FAILED = 'userDatabaseFailure';
protected $_messageTemplates = array(
self::USERNAME_ALREADY_EXISTS => "De gebruikersnaam '%value%' is al in gebruik, gebruik een andere."
self::DATABASE_FAILED => "Er ging iets mis bij het verbinden met de database."
);
public function isValid($value)
{
$magic = rand(0,3)
if($magic==0) {
$this->_error(self::USERNAME_ALREADY_EXISTS);
return false;
}
if($magic==1) {
$this->_error(self::DATABASE_FAILED);
return false;
}
return true;
}
}
그래서 내가 정확히 않았다 : 그냥 같은 "새 MyValidator_Usernameunique()"또는 뭔가를 말하여 도달 내가 코드를 조금 단순화로/Library/WebServer/Foo/library/MyValidator/Usernameunique.php
이 줄 번호를 무시 - : 제공[Wed Jul 11 14:07:41 2012] [error] [client 127.0.0.1] PHP Fatal error: Class 'MyValidator_Usernameunique' not found in /Library/WebServer/Foo/library/Form/Register.php on line 14, referer:
http://foo/
class Form_Register extends Form_FooForm
{
public function __construct()
{
parent::__construct();
$username = $this->createText('username', 'Gebruikersnaam')->setRequired(true);
$username->addValidator(new MyValidator_Usernameunique());
}
}
.
물론 이것은/Library/WebServer/Foo/library/MyValidator /가 내 PHP include_path에 없기 때문에 자연스럽고 필자는 'require'또는 'include'또는 'require_once'파일을 작성하지 않았습니다. 아직 이해할 수 있듯이 젠드 프레임 워크는 _을 /로 대체하고 include_path를 검색하여 파일을 자동로드한다고 가정합니다. 그리고 이것은 register-form에서는 잘 작동하지만 validator에서는 실패합니다. 왜 이래야하지? 거의 동일한 시나리오입니다. 또한 MyValidator_UsernameUnique를 동일한 오류 메시지가있는 컨트롤러 클래스에서 직접 만들려고하면 오류가 발생합니다.
왜 이런 일이 발생했는지에 대한 생각이나 표시는 감사하게 생각합니다. 또한,이 오류를 수정하려고하지 않고 있습니다. zend에서 자동 로딩을 더 잘 이해하려고합니다. 따라서 유효성 검사기를 중복 사용하는 솔루션을 제안하지 마십시오.
죄송합니다. Zend Framework에서 클래스가로드되지 않는 이유 또는 자동로드에 대한 설명을 찾으십니까? 귀하의 게시물은 약간 불분명합니다. – vascowhite
실제로 자동 로딩하는 경우에도 알아 두어야합니다. – Ponsjuh