在第 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_