微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Composer给出错误,“找不到类”

我正在使用Windows 10.在根目录中创建文件夹src后,我在其中创建了两个文件.

目录结构(在运行composer安装之前):

│
├── composer.json
├── run.PHP
│
└── src
     ├── childclass.PHP
     └── parentclass.PHP

根目录中的两个文件

composer.json:

{
    "name": "myvendor/mypackage",
    "description": "nothing",
    "authors": [
        {
            "name": "Omar Tariq",
            "email": "XXXXX@gmail.com"
        }
    ],
    "require": {},
    "autoload": {
        "psr-4": {
            "myns\\": "src/"
        }
    }
}

run.PHP

<?PHP

require_once __DIR__ . '/vendor/autoload.PHP';

use myns\childclass as childclass;

$childclass = new childclass();
$childclass->abc();

src文件夹中的两个文件

childclass.PHP

<?PHP

require_once 'parentclass.PHP';

use myns\parentclass as parentclass;

class childclass extends parentclass
{
    public function abc()
    {
        echo 'hello world';
    }
}

parentclass.PHP

<?PHP

namespace myns;

abstract class parentclass
{
    abstract public function abc();
}

运行composer安装后的目录结构:

│
├── composer.json
├── run.PHP
│
├── src
│    ├── childclass.PHP
│    └── parentclass.PHP
│
└── vendor
     ├── autoload.PHP
     │
     └── composer
          ├── autoload_classmap.PHP
          ├── autoload_namespaces.PHP
          ├── autoload_psr4.PHP
          ├── autoload_real.PHP
          ├── ClassLoader.PHP
          ├── installed.json
          └── LICENSE

现在,当我跑:

PHP run.PHP

我收到此错误

Fatal error: Class ‘myns\childclass’ not found in C:\wamp…\run.PHP on line 7

解决方法:

在composer.json中你为src文件夹定义了你使用myns命名空间,所以在你的childclass.PHP你应该使用

namespace myns;

它也没有必要添加

require_once 'parentclass.PHP';

要么

use myns\parentclass as parentclass;

所以你的childclass.PHP看起来像这样:

<?PHP

namespace myns;

class childclass extends parentclass
{
    public function abc()
    {
        echo 'hello world';
    }
}

另外在run.PHP文件中你可以替换:

use myns\childclass as childclass;

use myns\childclass;

您不需要使用,就好像您不想在课程中使用其他名称一样.

您还应该考虑使用带有大写字母(Studly caps)的名称空间和类相同的名称空间.而不是myns使用MyNs而不是父类使用ParentClass.您应该查看PSR-1 coding standardPSR-2 coding standard以遵循最佳编码实践.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐