我坐在一个包含几个类的大型代码库中,这些类通过神奇实现的方法(使用__call和__callStatic)来公开功能.例如:
class Foo {
public function __call($name, $parameters) {
echo "You called $name().\n";
}
}
$f = new Foo;
$f->test(); // runs fine, but PhpStorm flags as a warning
Run Code Online (Sandbox Code Playgroud)
问题是PhpStorm认为该test()方法不存在,因此它在呼叫站点发出警告.这有点烦人,因为代码当然会运行并按预期运行.
我已经通过检查"如果类中存在__magic方法的降级严重性"选项来调整严重性,但我更愿意:
以上任何一种可能吗?如果是这样,怎么样?
额外的红利问题:考虑方法调用被链接的情况.
$f = new Foo;
$f->test()->chain()->moreChain(); // potentially runs fine
Run Code Online (Sandbox Code Playgroud)
假设魔术调用$f->test()返回适当的后续(可能,但不一定,也是魔术)调用将正常工作.但是,由于我无法告诉IDE test()返回什么,因此将其余的调用链标记为缺少方法.更糟糕的是,"降级严重性"设置不适用于这些警告,因为IDE不知道这些中间对象应该是什么类.
有没有解决方案也可以涵盖这种情况?
尽管使用@method注释记录魔术方法似乎有效,但我必须假设这种方法目前存在一些问题,因为我只需要花一点时间来解决这些相关的错误:
我希望他们能在合理的时间内解决这些问题.
所以我刚开始使用Laravel(使用v5)和Eloquent.我正在努力获得一些基本的API并注意到很多工作方法都没有出现在PhpStorm的代码提示中
所以我有这个模型:
namespace Project\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class User extends Model
implements AuthenticatableContract, CanResetPasswordContract {
}
Run Code Online (Sandbox Code Playgroud)
在我的一个控制器中,我尝试做
User::query()->orderBy('id', 'desc');
Run Code Online (Sandbox Code Playgroud)
User::query()创建一个Eloquent Builder对象,orderBy()行为正确,没有错误.但是,当我输入时,PhpStorm不显示orderBy()(或者take(),skip()我确定其他人),User::query()->并在我实际使用它时发出警告.
我正在使用Laravel IDE Helper,它非常有助于为Facades提供代码提示,但不会对它看起来的模型/构建器提供帮助.
有人有解决方案吗?
当 PhpStorm 尝试修复一个常见错误时,我真是太疯狂了Method 'Bla bla' not found in class.
我已经在谷歌搜索了几天,希望找到解决这个问题的方法,但没有运气。
几乎我读过的每个单一主题都将我指向这个 laravel-ide-helper,但是在安装数千次之后(使用新的 laravel 项目),PhpStorm 仍然无法识别那些该死的方法。
我也在 PhpStorm 中安装了 laravel 插件,但仍然无法工作,现在该怎么办?
这是我的代码。
<?php
namespace App\Http\Controllers;
use App\Article;
use App\Menu;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Requestst;
use Illuminate\Support\Facades\Input;
class PagesController extends Controller
{
public function index()
{
$article = Article::latest('published_at')->get();
$data = array(
'articles' => $article
);
return view('pages.index' , compact($data));
}
public function contact()
{
return view('pages.contact');
}
public function about()
{
return view('pages.about');
}
}
Run Code Online (Sandbox Code Playgroud)
请帮忙。
So I've created a Message model:
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
public function getName()
{
return $this->name;
}
public function setSortOrder($sortOrder)
{
$this->sort_order = $sortOrder;
return $this;
}
}
Run Code Online (Sandbox Code Playgroud)
And it seems to be working just fine - I've created some columns using migrations, loaded, and saved the model.
But my IDE (PHP Storm) doesn't seem to be recognizing some of the methods on the model - namely findOrFail. It does autocomplete findOrNew though.
Wondering …
每当我在Laravel框架上编码时,我都会收到那些IDE警告。.就像没有找到像EloquentClass 这样的方法或类。
我在Google上搜索,发现了这个插件但它没有帮助,实际上我没有发现任何区别。
Laravel和PhpStorm之间甚至可以集成吗?