Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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
Laravel无法在控制器中使用自定义应用程序PHP文件_Php_Laravel_Laravel 5_Autoload - Fatal编程技术网

Laravel无法在控制器中使用自定义应用程序PHP文件

Laravel无法在控制器中使用自定义应用程序PHP文件,php,laravel,laravel-5,autoload,Php,Laravel,Laravel 5,Autoload,在我的控制器中,我试图使用位于应用程序目录中的PHP文件 我的控制器看起来像 namespace App\Http\Controllers; use Illuminate\Http\Request; use App\MyClass\API; public function getservices(Request $request) { $sourcename = request('sName'); $password =

在我的控制器中,我试图使用位于应用程序目录中的PHP文件

我的控制器看起来像

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\MyClass\API;
    public function getservices(Request $request)
    {
        $sourcename = request('sName');
        $password = request('password');
        $siteID = request('siteID');

       // initialize default credentials
        $creds = new SourceCredentials($sourcename, $password, 
        array($siteID));
SourceCredentials类位于API.PHP文件中,位于App\MyClass\API中,这是API.PHP

namespace App\MyClass;

class SourceCredentials
{
    public $SourceName;
    public $Password;
    public $SiteIDs;
    //some other stuffs
当我使用我的路由向控制器发出POST请求时,我收到以下错误-

找不到类“App\Http\Controllers\SourceCredentials”

我是不是犯了一些错误?我已经为API.PHP正确命名了名称空间,并且正在控制器中使用该名称空间。请帮忙

您的用途是:

use App\MyClass\API;
而您的类名为:

SourceCredentials
按如下方式更正您的使用:

use App\MyClass\SourceCredentials;
// or if you want to youse the API name
use App\MyClass\SourceCredentials as API;
你的用途是:

use App\MyClass\API;
而您的类名为:

SourceCredentials
按如下方式更正您的使用:

use App\MyClass\SourceCredentials;
// or if you want to youse the API name
use App\MyClass\SourceCredentials as API;

您忘记了使用App\MyClass\SourceCredentials

use App\MyClass\SourceCredentials;
您的控制器应该如下所示:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\MyClass\API;
use App\MyClass\SourceCredentials;
public function getservices(Request $request)
{
    $sourcename = request('sName');
    $password = request('password');
    $siteID = request('siteID');

   // initialize default credentials
    $creds = new SourceCredentials($sourcename, $password, 
    array($siteID));

您忘记了使用App\MyClass\SourceCredentials

use App\MyClass\SourceCredentials;
您的控制器应该如下所示:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\MyClass\API;
use App\MyClass\SourceCredentials;
public function getservices(Request $request)
{
    $sourcename = request('sName');
    $password = request('password');
    $siteID = request('siteID');

   // initialize default credentials
    $creds = new SourceCredentials($sourcename, $password, 
    array($siteID));

注意:
SourceCredentials
是一个类,而不是一个函数。是的,但是我的API.PHP文件有多个类,SourceCredentials就是其中之一。请将该文件拆分,并将每个类保存在与该类同名的文件中(包括相同的大小写)。然后确保您的文件中有正确的名称空间,并且可以使用Laravels auto loader加载所需的类。谢谢。我这样做了,但我有另一个问题。我无法使用与该类相关的函数。我已经在扩展控制器类了,我不能扩展另一个类来使用这个函数,我不明白你的意思。如果您有一个新的(不同的)问题,请创建一个包含所有信息和示例的新问题。注意:
SourceCredentials
是一个类,而不是一个函数。是的,但是我的API.PHP文件有多个类,SourceCredentials是其中之一。请将该文件拆分,并将每个类保存在与该类同名的自己的文件中(包括相同的外壳)。然后确保您的文件中有正确的名称空间,您将能够使用Laravels auto loader加载所需的类。谢谢。我这样做了,但我有另一个问题。我无法使用与该类相关的函数。我已经在扩展controller类,并且我无法扩展另一个类来使用该函数不明白你的意思。如果你有新的(不同的)问题,请创建一个包含所有信息和示例的新问题。谢谢。但是我的API.php文件有多个类,如UserCredentials、API Service等。使用所有类的最佳方式是什么?您遵循哪种psr?我认为在一个文件中包含大量类不是一个好主意!记住单一责任这是一个很好的原则,可以为您节省很多时间!@tereško您应该遵循teeyo的建议,您的代码可能会受益于一种很好的传统方法,因为您选择使用非常固执己见的Laravel,它的主要好处是它关注文件名和类名的约定,而不是显式配置。谢谢你可以。但是我的API.php文件有多个类,比如UserCredentials、API Service等等。使用所有类的最佳方式是什么?你遵循哪个psr?我认为在一个文件中有很多类不是一个好主意!记住单一责任是一个很好的原则,可以为你节省很多时间!@tereško you应该按照teeyo的建议,您的代码可能会受益于一种很好的传统方法,因为您选择使用非常固执己见的Laravel,它的主要好处是它将重点放在文件名和类名的约定上,而不是显式配置上。