Zf2 扩展 class 给出错误 class not found
Zf2 extending the class giving the error class not found
我正在尝试在 ZF2 的 vendor 文件夹中创建库。这是结构:
/Vendor
/Mylib
/Mylib.php
/MylibStore.php
/MylibError.php
....
我在 Applicaiotion/Module.php
:
中声明了相同的库
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'Mylib' => __DIR__ . '/../../vendor/Mylib',
),
),
);
}
现在我在控制器中调用 Mylib class 它正在工作,但是当我试图在控制器中实例化其他 class 时它给出了错误。这是代码快照:
Mylib.php
namespace Mylib;
abstract class Mylib
{
MylibStore.php
namespace MylibStore;
use \Mylib\MylibError;
class MylibStore extends MylibError
{
MylibError.php
namespace MylibError;
class MylibError
{
我收到以下错误:
Fatal error: Class 'MylibStore\MylibError' not found in
C:\xampp\htdocs\coxaxle\vendor\Mylib\MylibStore.php on line 5
请告诉我我做错了什么?我该如何解决这个问题?
问题出在您的命名空间中。 Mylib
目录中的所有文件都应该具有相同的 namespace
- Mylib
.
这就是为什么只有 Mylib
class 有效,因为它有正确的 namespace
。
如果您将 classes 放在单独的目录中,那么您必须更新关于此目录的名称空间。
示例:
/Vendor
/Mylib
/Service
/MylibService.php
/Mylib.php
....
Class Mylib
应该有命名空间 Mylib
Class MylibService
应该有命名空间 Mylib\Service
我正在尝试在 ZF2 的 vendor 文件夹中创建库。这是结构:
/Vendor
/Mylib
/Mylib.php
/MylibStore.php
/MylibError.php
....
我在 Applicaiotion/Module.php
:
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'Mylib' => __DIR__ . '/../../vendor/Mylib',
),
),
);
}
现在我在控制器中调用 Mylib class 它正在工作,但是当我试图在控制器中实例化其他 class 时它给出了错误。这是代码快照:
Mylib.php
namespace Mylib;
abstract class Mylib
{
MylibStore.php
namespace MylibStore;
use \Mylib\MylibError;
class MylibStore extends MylibError
{
MylibError.php
namespace MylibError;
class MylibError
{
我收到以下错误:
Fatal error: Class 'MylibStore\MylibError' not found in C:\xampp\htdocs\coxaxle\vendor\Mylib\MylibStore.php on line 5
请告诉我我做错了什么?我该如何解决这个问题?
问题出在您的命名空间中。 Mylib
目录中的所有文件都应该具有相同的 namespace
- Mylib
.
这就是为什么只有 Mylib
class 有效,因为它有正确的 namespace
。
如果您将 classes 放在单独的目录中,那么您必须更新关于此目录的名称空间。
示例:
/Vendor
/Mylib
/Service
/MylibService.php
/Mylib.php
....
Class Mylib
应该有命名空间 Mylib
Class MylibService
应该有命名空间 Mylib\Service