在第 1 行的 Psy Shell 代码中找不到 Laravel 5.6 Tinker Class '...'

Posted

技术标签:

【中文标题】在第 1 行的 Psy Shell 代码中找不到 Laravel 5.6 Tinker Class \'...\'【英文标题】:Laravel 5.6 Tinker Class '...' not found in Psy Shell code on line 1在第 1 行的 Psy Shell 代码中找不到 Laravel 5.6 Tinker Class '...' 【发布时间】:2018-12-16 09:46:10 【问题描述】:

我正在尝试在全新安装的 Laravel 中创建一个简单的类。为此,我创建了一个文件夹 app/Convert 并将 php 文件放在那里。该类如下所示:

<?php 

namespace App\Convert;

class Converter

    public function __construct()
    
        ...Code
    

现在当我尝试从 Tinker 访问它时:

use App\Convert\Converter;
new Converter;

我明白了:

PHP Fatal error:  Class 'App/Convert/Converter' not found in Psy Shell code on line 1

我做错了什么?据我了解,laravel 应该自动执行 app 文件夹及其子文件夹中的文件,还是我弄错了?

编辑: 对不起,我第一次写错了(我只是在命名空间上玩了这么多,所以我拿错了版本)。问题实际上是文件名不是 Converter.php,所以当我将其更改为 Converter.php 时,事情开始发生变化。如果他把德文郡的答案作为答案而不是评论,我会将其设置为正确答案。所以写在这里:

包含类的文件名应与类名相同。并且文件的路径与命名空间路径相同。(请参阅他的答案下方的 Matthew 的评论)

【问题讨论】:

【参考方案1】:

有时需要清除缓存, 这个命令在我的情况下有效:

composer dump-autoload

我希望它也对你有用

问候

【讨论】:

【参考方案2】:

您在类中的命名空间与您尝试导入它的方式不同。您在那里将其设置为App\Convert。您需要将其导入为App\Convert\Converter

类的完全限定类名包括命名空间和类名。因此,例如,如果您有一个名为Bar 的类,其命名空间为App\Foo,则完全限定的类名称为App\Foo\Bar,并且能够将其用作Bar,您需要导入如下:

use App\Foo\Bar;

另外,正如 Devon 下面所说,您需要在 app/Foo/Bar.php 拥有包含该类的文件,以便默认的 Laravel 自动加载器配置来获取它。

【讨论】:

该类还需要位于 app/Convert/Converter.php 文件中,以便 PSR-4 自动加载器拾取它。 谢谢德文和马修。关于文件名的文档在哪里写? @Timkolm Laravel 文档不会涵盖这些内容。它是 Composer 工作方式的一部分。在您的composer.json 中,应该有一个标记为autoload 的部分,另一个标记为psr-4 的部分嵌套在它下面 - 将特定的命名空间映射到给定的文件夹,因此App 将映射到您的app/ 目录。命名空间的后续级别映射到其下的文件夹,因此App\User 将映射到app/User.php,或者App\Models\User 将映射到app/Models/User.php。你可以阅读更多here。

以上是关于在第 1 行的 Psy Shell 代码中找不到 Laravel 5.6 Tinker Class '...'的主要内容,如果未能解决你的问题,请参考以下文章

PHP 致命错误:在第 47 行的 /var/www/znata.com/app/AppKernel.php 中找不到类 'Application\Sonata\MediaBundle\Applica

致命错误:在第 146 行的 ...\..\Abstract.php 中找不到类“Mage_Enterprise_Giftwrapping_Block_Adminhtml_Product_Helper

致命错误:在第 14 行的 C:\xampp\htdocs\chat-app\app\Events\NewMessage.php 中找不到特征“Illuminate\Foundation\Events

致命错误:在第 697 行的 /home/user1/public_html/go-pear.php 中找不到类“PEAR”

致命错误:在第 146 行的 \lib\Varien\Data\Form\Abstract.php 中找不到类“Mage_Enterprise_Rma_Block_Adminhtml_Product_

PHP在所需文件中找不到类