PhpStorm自动完成我的类,但我得到的类在Laravel 5中找不到
我已经将我的类正常地添加到了Laravel下面的PhpStorm自动完成我的类,但我得到的类在Laravel 5中找不到,php,laravel-5,composer-php,phpstorm,Php,Laravel 5,Composer Php,Phpstorm,我已经将我的类正常地添加到了Laravel下面的app目录中。今天,当我添加一个具有目录结构的API客户机时,我无法使一个类在LaravelPSR-4默认结构中被识别 我的API客户端目录结构是: app -- MySubdirectory -- Partners + |- Partner1 |- Partner2 +
app
目录中。今天,当我添加一个具有目录结构的API客户机时,我无法使一个类在LaravelPSR-4默认结构中被识别
我的API客户端目录结构是:
app -- MySubdirectory -- Partners +
|- Partner1
|- Partner2 +
|- Includes -- (other subdirectories)
|- Version -- (other subdirectories)
|- ApiClient.php
现在,我创建了一个模型MyModel,它位于应用程序下面
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
/**
*/
protected $api;
/**
* Returns MyModel API Client connected to the API.
*/
public function __construct()
{
parent::__construct();
// ApiClient is not recognized thought PhpStorm do recognized.
$this->api = \ApiClient::factory(PROTOCOL_JSON, VERSION_DEFAULT);
$credentials = json_decode(OtherModel::where('name', 'some_name')->configuration);
$this->api->setConnectId($credentials['connect_id']);
$this->api->setSecretKey($credentials['secret_key']);
}
}
PhpStorm建议使用该类,显然识别出一个自动加载的类
但是当我运行脚本时,我得到了一个错误:
FatalThrowableError in MyModel.php line 20:
Class 'ApiClient' not found
好的,composer autoload
可能有一些问题-直到现在我创建的其他类都是由PHP
自动识别的
因此,我运行了composer dump autoload-o
并验证了autoload_classmap.php
文件,实际上app
目录下的所有其他子目录/类都被识别,减去MySubdirectory
和MySubdirectory
下的其他子目录和类
My composer.json文件具有基本的自动加载部分:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
那么,为什么运行composer dump autoload
时无法捕获MySubdirectory
及其下的其他子目录和类呢
以及为什么PhpStorm会捕获ApiClient.php?需要更多信息。您的
ApiClient
类是如何定义的?它使用了什么名称空间?等等。但一般来说——IDE会自动完成类名,而不管其位置如何(即使它位于错误的文件夹中)。哦,谢谢@LazyOne,您已经看到了我面前的一个跨度:)。ApicClient中命名空间的定义不正确。我已经下载了这个包(一个旧的包),并且没有更正名称空间类以符合PSR-4Laravel名称空间结构。
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},