【问题标题】:Zf2 extending the class giving the error class not foundZf2 扩展类给出错误类未找到
【发布时间】:2017-07-28 19:12:53
【问题描述】:

我正在尝试在 ZF2 的供应商文件夹中创建库。这是结构:

/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 类,它正在工作,但是当我尝试在控制器中实例化其他类时,它给出了错误。这是代码快照:

Mylib.php

namespace Mylib;
abstract class Mylib
{ 

MylibStore.php

namespace MylibStore;
use \Mylib\MylibError;
class MylibStore extends MylibError
{

MylibError.php

namespace MylibError;
class MylibError
{

我收到以下错误:

致命错误:未找到类 'MylibStore\MylibError' C:\xampp\htdocs\coxaxle\vendor\Mylib\MylibStore.php 在第 5 行

请让我知道我做错了什么?我该如何解决这个问题?

【问题讨论】:

    标签: php module zend-framework2


    【解决方案1】:

    问题出在您的命名空间中。 Mylib 目录中的所有文件都应具有相同的 namespace- Mylib
    这就是为什么只有Mylib 类有效,因为它有正确的namespace

    如果你把你的类放在不同的目录中,那么你必须更新这个目录的命名空间。

    示例:

    /Vendor
         /Mylib
              /Service
                  /MylibService.php
              /Mylib.php
              ....
    

    Mylib应该有命名空间Mylib
    MylibService 应该有命名空间Mylib\Service

    【讨论】:

    • 我有一个问题......如果我会给所有文件提供相同的命名空间,那么它不会产生任何冲突吗?像相同的命名空间一样给出相同的类名的错误。
    • 只要你的类名不同,就不会有冲突
    猜你喜欢
    • 2021-11-13
    • 2017-10-21
    • 1970-01-01
    • 2015-07-11
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    相关资源
    最近更新 更多