您不能拥有以数字开头的命名空间。
命名空间遵循相同的变量命名的基本规则:
有效变量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线
(强调我的)。
因此,您的声明
namespace App\Scripts\Providers\1
基本上是invalid.
从那时起,所有的赌注都结束了。
首先,将您的命名空间更改为有效的标识符(我建议选择比numbers,你可以有描述性的名字,而且很简单没有理由不):
namespace App\Scripts\Providers\GroupWhatever
从逻辑上讲,您必须重命名该文件所在的文件夹。它曾经是
app/Scripts/Providers/1/Scrape.php
所以将该目录重命名为
app/Scripts/Providers/GroupWhatever/Scrape.php
(在这两种情况下,替换GroupWhatever
对您的应用程序和领域有意义的东西)。
从那时起,如果班级\App\Models\Providers
存在于app/Models/Providers.php
,它应该可以工作。
重要的:
可能存在的另一个问题是,不太清楚什么是Scripts/Scrape.php
是或如何称呼。
这应该有效如果你正在执行Scrape.php
从 Laravel 内部,通过调用 Laravel 控制器或控制台应用程序。
如果您直接调用此脚本(例如通过执行php app/Scripts/Providers/1/Scrape.php
(或修正后的app/Scripts/Providers/GroupWhatever/Scrape.php
)这根本行不通,因为自动加载逻辑根本不运行。
如果您手动执行脚本,在上述更改之上您需要包含作曲家自动加载脚本,该脚本位于vendor/autoload.php
.
基本上,将此行添加到靠近顶部的位置Scrape.php
:
require_once dirname( __DIR__ ) . '/../../../vendor/autoload.php';
(我想我放置了适当数量的 go-up-one-dir 路径段,但要确保它与安装中的正确路径匹配)。
一旦到位,自动加载器将运行,并且将找到类。