首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >试图理解PSR-4自动通过控制台应用程序。我做错了什么?

试图理解PSR-4自动通过控制台应用程序。我做错了什么?
EN

Stack Overflow用户
提问于 2016-09-27 07:36:07
回答 1查看 87关注 0票数 0

我试图通过编写一个运行在控制台上的非常基本的示例应用程序来理解PSR-4自动加载。

下面是我的应用程序的(目录)结构:

app/ -library/auth/Author/AuthorInterface.php -library/auth/Author/Author.php -library/auth/Authorize/ -library/database/ -vendor/composer/ -vendor/autoload.php -composer.json -composer.lock -composer.phar -manager.php

我所要做的就是运行manager.php并让它回显来自Author.php的返回语句

AuthorInterface.php:

代码语言:javascript
运行
复制
namespace Vee\Auth\Author;

interface AuthorInterface
{
    public function write();
}

Author.php

代码语言:javascript
运行
复制
namespace Vee\Auth\Author;

class Author implements AuthorInterface
{
    function __construct()
    {
        return "Hello";
    }

    public function write()
    {
        return "Hello.write";
    }
}

manager.php:

代码语言:javascript
运行
复制
require "vendor/autoload.php";

use Vee\Auth\Author;

echo new Author();

composer.json:

代码语言:javascript
运行
复制
{
    "autoload": {
        "psr-4": {
            "Vee\\": "library/"
        }
    },
    "require": {
        "monolog/monolog": "^1.21"
    }
}

下面是我在尝试运行manager.php时所看到的错误

代码语言:javascript
运行
复制
$ php manager.php 

Fatal error: Class 'Vee\Auth\Author' not found in /<path-to-app>/manager.php on line 7

我已经跑了:

代码语言:javascript
运行
复制
$ php composer.phar update

Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files

我遗漏了什么?

编辑:

我在Mac上运行PHP 5.5,如果有什么区别的话-

代码语言:javascript
运行
复制
$ php --version
PHP 5.5.36 (cli) (built: Jun 12 2016 23:47:46) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
EN

Stack Overflow用户

回答已采纳

发布于 2016-09-27 07:42:29

按psr-4 2.6

所有类名必须以区分大小写的方式引用。

和3.3

终止类名对应于以.php结尾的文件名。文件名必须与终止类名的大小写匹配。

尝试将auth重命名为Auth

更新:

只是注意到您在manager.php中的use语句是错误的。尝试:

代码语言:javascript
运行
复制
require "vendor/autoload.php";

use Vee\Auth\Author\Author;

print (new Author())->write();

此外,即使在从构造函数返回字符串时,也不能回显类。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39718783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档