相关疑难解决方法(0)

对于神奇实现的方法,如何处理"类中未找到的方法"警告?

我坐在一个包含几个类的大型代码库中,这些类通过神奇实现的方法(使用__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方法的降级严重性"选项来调整严重性,但我更愿意:

  1. 仅对特定类完全禁用此功能,或
  2. 使用IDE而不是反对它 - 提供我已有的信息,以便我们的观点达成一致

以上任何一种可能吗?如果是这样,怎么样?

额外的红利问题:考虑方法调用被链接的情况.

$f = new Foo;
$f->test()->chain()->moreChain();   // potentially runs fine
Run Code Online (Sandbox Code Playgroud)

假设魔术调用$f->test()返回适当的后续(可能,但不一定,也是魔术)调用将正常工作.但是,由于我无法告诉IDE test()返回什么,因此将其余的调用链标记为缺少方法.更糟糕的是,"降级严重性"设置不适用于这些警告,因为IDE不知道这些中间对象应该是什么类.

有没有解决方案也可以涵盖这种情况?

更新

尽管使用@method注释记录魔术方法似乎有效,但我必须假设这种方法目前存在一些问题,因为我只需要花一点时间来解决这些相关的错误:

我希望他们能在合理的时间内解决这些问题.

php phpstorm

52
推荐指数
2
解决办法
3万
查看次数

在PhpStorm中雄辩的ORM代码提示

所以我刚开始使用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提供代码提示,但不会对它看起来的模型/构建提供帮助.

有人有解决方案吗?

php phpstorm laravel eloquent

23
推荐指数
6
解决办法
2万
查看次数

PhpStorm laravel 5 方法未找到

当 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)

请帮忙。

php phpstorm laravel

5
推荐指数
1
解决办法
6657
查看次数

Why isn't my IDE auto-completing the findOrFail method?

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 lumen

3
推荐指数
1
解决办法
1078
查看次数

如何在Laravel和PhpStorm之间集成?

每当我在Laravel框架上编码时,我都会收到那些IDE警告。.就像没有找到像EloquentClass 这样的方法或类。

我在Google上搜索,发现了这个插件但它没有帮助,实际上我没有发现任何区别。

Laravel和PhpStorm之间甚至可以集成吗?

phpstorm laravel

1
推荐指数
1
解决办法
1091
查看次数

标签 统计

laravel ×4

phpstorm ×4

php ×3

eloquent ×1

lumen ×1