命名空间问题。找不到课程

时间:2019-04-03 13:32:58

标签: php namespaces

我是使用命名空间的新手,但我真的不明白为什么这个简单的代码无法正常工作。

protocoloWt / schemas / AuthorSchema.php

namespace protocoloWt\schemas;

class AuthorSchema
{
    protected $resourceType = 'people';

    function __construct()
    {

    }

    public function getId($author)
    {
        /** @var Author $author */
        return $author->authorId;
    }

    public function getAttributes($author)
    {
        /** @var Author $author */
        return [
            'first_name' => $author->firstName,
            'last_name'  => $author->lastName,
        ];
    }
}

protocoloWt / App.php

namespace protocoloWt;
use protocoloWt\schemas\AuthorSchema;

$a = new AuthorSchema();

我收到以下错误:

  

严重错误:找不到类'protocoloWt \ schemas \ AuthorSchema'   C:\ xampp \ htdocs \ wt.uptkd \ protocoloWt \ app.php

我认为代码正确无误,对吗?但是为什么我会收到该错误?

2 个答案:

答案 0 :(得分:0)

如果您不使用(PSR0 / 4)自动加载器(例如作曲家),则必须在app.php文件中导入文件protocoloWt / schemas / AuthorSchema.php。

自动载入作曲家的文档: https://getcomposer.org/doc/01-basic-usage.md#autoloading

答案 1 :(得分:0)

命名空间并不意味着自动加载,这意味着您必须包含/要求该类

require_once('protocoloWt/schemas/AuthorSchema.php');

或设置自动装带器。如果您想这样做,我可以给您一个代码示例! :)