Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未捕获错误“;“未找到类”;在拉威尔5.8_Php_Laravel_Oop_Composer Php - Fatal编程技术网

Php 未捕获错误“;“未找到类”;在拉威尔5.8

Php 未捕获错误“;“未找到类”;在拉威尔5.8,php,laravel,oop,composer-php,Php,Laravel,Oop,Composer Php,我正在尝试从另一个文件夹调用我的模型文件。我已经提供了这两种文件结构 我得到这个错误: 未捕获错误:在/Applications/XAMPP/xamppfiles/htdocs/pro/App/Scripts/Providers/1/scrap.php:17中找不到类“App\Models\Providers” 我正在从位于以下位置的脚本文件夹调用模型文件: app/Scripts/Providers/1/Scrape.php app/Models/Providers.php 在本课程中,我

我正在尝试从另一个文件夹调用我的模型文件。我已经提供了这两种文件结构

我得到这个错误:

未捕获错误:在/Applications/XAMPP/xamppfiles/htdocs/pro/App/Scripts/Providers/1/scrap.php:17中找不到类“App\Models\Providers”

我正在从位于以下位置的脚本文件夹调用模型文件:

app/Scripts/Providers/1/Scrape.php
app/Models/Providers.php
在本课程中,我有以下几点:

namespace App\Scripts\Providers\1;
use App\Models;
模型文件位于:

app/Scripts/Providers/1/Scrape.php
app/Models/Providers.php
在此文件中,我有以下内容:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
我没有分享这两个文件中的全部内容。如果你想看到这些文件的全部内容,请让我知道

这就是Scrape.php的样子

<?php
namespace App\Scripts\Providers\1;
use App\Models\Providers;

class Scrape {
    public function __construct() {
        $test = new \App\Models\Providers();
        die(print_r($test, true));
    }
}

$obj = new Scrape();

scrap.php
中,将名称空间更改为:

<?php
namespace App\Scripts\Providers\p1;

scrap.php
中,将名称空间更改为:

<?php
namespace App\Scripts\Providers\p1;

名称空间不能以数字开头

名称空间遵循相同的规则:

有效变量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线

(我的重点)

因此,你的声明

namespace-App\Scripts\Providers\1
基本上是无效的

从那以后,所有的赌注都输光了

首先,将名称空间更改为有效标识符(我建议选择比数字更合理、更易识别的名称,您可以使用描述性名称,并且没有理由不这样做):

从逻辑上讲,您必须重命名此文件所在的文件夹。过去是这样

app/Scripts/Providers/1/scrap.php
因此,将该目录重命名为

app/Scripts/Providers/groupwhere/Scrape.php
(在这两种情况下,用对您的应用程序和域有意义的内容替换
groupwhere

从那时起,如果类
\App\Models\Providers
存在于
App/Models/Providers.php
,它应该可以工作

重要: 另一个可能存在的问题是,不太清楚什么是
Scripts/Scrape.php
,或者如何调用它

如果您在Laravel中通过调用Laravel控制器或控制台应用程序来执行
Scrape.php
,这应该可以工作。

如果您直接调用此脚本(例如,通过执行
php-app/Scripts/Providers/1/scrap.php
(或更正的
app/Scripts/Providers/groupwhere/scrap.php
),这根本不起作用,因为自动加载逻辑根本不运行

如果您是手动执行脚本,在上述更改的基础上您需要包含composer autoload脚本,该脚本位于
vendor/autoload.php

基本上,将这一行添加到
scrap.php的顶部附近:

require_once dirname(u DIR_u)。'/../../../../../vendor/autoload.php';
(我想我放了适当数量的上升一个方向的路径段,但您要确保它与安装中的正确路径相匹配)


一旦安装到位,自动加载程序将运行,并找到类。

您不能有以数字开头的命名空间

名称空间遵循相同的规则:

有效变量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线

(我的重点)

因此,你的声明

namespace-App\Scripts\Providers\1
基本上是无效的

从那以后,所有的赌注都输光了

首先,将名称空间更改为有效标识符(我建议选择比数字更合理、更易识别的名称,您可以使用描述性名称,并且没有理由不这样做):

从逻辑上讲,您必须重命名此文件所在的文件夹

app/Scripts/Providers/1/scrap.php
因此,将该目录重命名为

app/Scripts/Providers/groupwhere/Scrape.php
(在这两种情况下,用对您的应用程序和域有意义的内容替换
groupwhere

从那时起,如果类
\App\Models\Providers
存在于
App/Models/Providers.php
,它应该可以工作

重要: 另一个可能存在的问题是,不太清楚什么是
Scripts/Scrape.php
,或者如何调用它

如果您在Laravel中通过调用Laravel控制器或控制台应用程序来执行
Scrape.php
,这应该可以工作。

如果您直接调用此脚本(例如,通过执行
php-app/Scripts/Providers/1/scrap.php
(或更正的
app/Scripts/Providers/groupwhere/scrap.php
),这根本不起作用,因为自动加载逻辑根本不运行

如果您是手动执行脚本,在上述更改的基础上您需要包含composer autoload脚本,该脚本位于
vendor/autoload.php

基本上,将这一行添加到
scrap.php的顶部附近:

require_once dirname(u DIR_u)。'/../../../../../vendor/autoload.php';
(我想我放了适当数量的上升一个方向的路径段,但您要确保它与安装中的正确路径相匹配)


一旦安装到位,自动加载程序将运行,并且会找到类。

我猜他有自动加载问题,他应该转储自动加载。不太可能,@Thamer。他们指的是
App\Model
命名空间中的一个类,来自
App\Scripts
命名空间中的另一个类。如果一个类正在自动加载,另一个类将自动加载也应该自动加载。我相信更可能的问题是他们试图直接执行
Scrape.php
,因此根本不执行自动加载程序。@yivi I ha