2014-11-30 9 views
0

테스트 프로젝트 (ZF2를 배우려고 노력하는 중)에서 작업하는 동안 "클래스를 찾을 수 없습니다"라는 PHP 치명적인 오류가 나타납니다. 나는 (지금 작동 같이) "괜찮아요"내 classmap, 내 entites 자동으로 dosnt 부하를 포함 해달라고하면ClassAutoload가 수행하는 동안 StandardAutoload가 작동하지 않습니다.

return array(
     'Zend\Loader\ClassMapAutoloader' => array(
      __DIR__ . '/classmap.php', 
     ), 
     'Zend\Loader\StandardAutoloader' => array(
      'namespaces' => array(
       __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 
      ), 
     ), 
    ); 

문제는 간단하지만, 문제가 어떤 곳 난 정말 알고 싶습니다 ...

내 classmap.php 파일은 다음과 같이 잘못된 모습입니다 :

[Sun Nov 30 17:16:40 2014] [error] [client 172.30.30.6] PHP Fatal error: 
    Class 'Common\\Entity\\Domain' not found in 
    /var/www/hosts.legetimen.no/module/Frontpage/src/Frontpage/Controller/IndexController.php 
    on line 38 
,369 :

<?php 
// Generated by Zend Framework 2 
return array(
     'Common\Entity\Property' => __DIR__ . '/src/Common/Entity/property.php', 
     'Common\Entity\Domain' => __DIR__ . '/src/Common/Entity/domain.php', 
     'Common\Module'   => __DIR__ . '/Module.php', 
); 

내 오류 로그는 다음과 같습니다

(나는 testet 내 Modeule.php와 함께 die ("test"); 확인하는 것이로드 등) 일반적인 내 모듈의

[편집] 디렉토리 구조 :

$ tree Common 
Common 
├── classmap.php 
├── config 
│   └── module.config.php 
├── Module.php 
└── src 
    └── Common 
     ├── Controller 
     └── Entity 
      ├── domain.php 
      └── property.php 

감사합니다!

답변

1

오류 메시지에 Class 'Common\\Entity\\Domain' not found in...이 있으므로 표준 자동 로더가 domain.php이 아닌 Domain.php 파일을 찾고 있으므로 파일 이름의 대문자 첫 글자로 간단히 변경하십시오.

ClassMapAutoloader는 Common\Entity\Property/src/Common/Entity/property.php에 올바르게 매핑되어 있기 때문에이 문제가 없습니다.

+0

니스, 매력처럼 작동 :)하지만 클래스 (파일) 이름이 소문자 여야한다는 인상 아래에 있었나요? – Richard87

+0

걱정하지 마세요. 설명서를 읽었습니다. P http://framework.zend.com/manual/1.12/en/coding-standard.naming-conventions.html – Richard87

+1

더 나은 모양이 있습니다. [https : // github. 표준 오토로더에서 zf2가 classname을 filename으로 변환하는 방법을 알려주는 Zend/Loader/Standard/Zend/Zend/ZendFramework/zf2/blob/master/library/Zend/Loader/StandardAutoloader.php # L253-L267) –