Laravel PhpStorm Laravel plugin

Adelf

Administrator
Команда форума
Попал я на проект, в котором root namespace был не App, а другой. И с большим неудовольствием заметил, что Laravel plugin особо не поддерживает такое и автокомплит контроллеров работает плохо(без обрезания стандартного namespace для контроллеров).
И решил я, что настал тот момент, что пора отдавать долг open-source сообществу, правда изначальная цель как всегда была эгоистичной. Обнаружив в себе недюжинные способности к программированию на Java, исправил это и отправил pull request. Потом понял, что довольно легко можно исправить и самую бесящую недоработку этого плагина - отсутствие поддержки Route::group и обрезания групповых namespace. Добавил и это к пулл-реквесту. Сам уже две недели радуюсь, пользуюсь. Правда, автор плагина, похоже, больше занимается плагином к symfony2 и всякими доктринами и мой pull request уже долго висит и ждет своего часа.
Два вопроса.
1. Как принято в гитхабах пинать автора для внимания к пулл-реквесту?
2. Есть ли у кого-нибудь другие бесящие недоработки этого плагина? Мож их тоже легко исправить можно...
 

Adelf

Administrator
Команда форума
Таки пнул. Его задело и чел последние пару дней фигачит коммит за коммитом. Скоро будет релиз. :)
 

Absinthe

жожо
А можно нормальный автокомплит для моделей?
ide-hrlper добавляет лишь небольшую часть методов.
 

Adelf

Administrator
Команда форума
Кстати, сегодня он реализовал автокомплит для функций типа route! Офигенно )

Насчет моделей... если ты о том, что постоянно не находит методов query builder, то вероятно это лучше реализовать с помощью ide-helper. Даниэль собирается конечно сделать так, чтобы надобность в ide-helper отпала... но думаю вряд ли это случится в ближайшее время.

Я там нашел issue - просьбу реализовать автокомплит в validation rules. Думаю вот... стоит ли оно того. Вроде и удобно, но не сказать, чтобы я без этого страдал.
 

Adelf

Administrator
Команда форума
У меня работает.

У меня модели наследуются от \Eloquent. А в ide-helper по умолчанию такая настройка:

'extra' => array(
'Eloquent' => array('Illuminate\Database\Eloquent\Builder', 'Illuminate\Database\Query\Builder'),

Т.е. он туда инклудит все из этих классов.
 

Absinthe

жожо
У меня по умолчанию, от \Illuminate\Database\Eloquent\Model

При этом в _ide_helper.php я нашел class Eloquent extends \Illuminate\Database\Eloquent\Model
Я что-то не так делаю?

И еще два момента для автокомплита:
PHP:
$imageManager = App::make('image');
Method make not found in \Illuminate\Support\Facedes\App
Однако я нашел public static function make($abstract, $parameters = array()){ в _ide_helper.php
Почему PhpStorm его не подхватывает и ругается на Method make not found in \Illuminate\Support\Facedes\App ?

К тому же должен выводить тип, ведь в ide-helper есть поддержка App::make.
 

Adelf

Administrator
Команда форума
Ну с \Illuminate\Database\Eloquent\Model и не получится. с \Eloquent работает. Просто ide-helper подставляет все методы с этих классов в \Eloquent.

тип выводит если сделать ide-helper:meta . для PhpStorm работает.

Мож \App::make() ? ;-)
 

Absinthe

жожо
Точно. Моя ошибка.
И типы стал выводить.

Ну с \Illuminate\Database\Eloquent\Model и не получится. с \Eloquent работает.
Заработало. Однако разве правильно наследоваться от заглушки только из-за подобного автокомплита?
 
Последнее редактирование:

Adelf

Administrator
Команда форума
@Absinthe, неправильно :) но, можно это исправить... в ide-helper том же. Над попробовать.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Наследование от \Eloquent уже давно не новость) А фича)
 

Absinthe

жожо
Наследование от \Eloquent уже давно не новость) А фича)
Без этой фичи ide-helper не работает для моделей (точнее, частично).
Но в документации ide-helper про это ничего не написано: https://github.com/barryvdh/laravel-ide-helper

Теперь шторм практически не ругается, за исключением вещей вроде chained методов, например в Blueprint в миграциях.
 

Adelf

Administrator
Команда форума
А вообще неплохо бы специальный phpDoc тег на такой случай. Когда объект через магию реализует методы другого класса. Для PHP-реалий вполне зайдет...
 

Adelf

Administrator
Команда форума
удобства ради оно поддерживает все эти методы. Думаю при желании ты мог бы напрямую использовать эти классы. Но вряд ли захочешь отказаться от такого сахарку.
 

Absinthe

жожо
удобства ради оно поддерживает все эти методы. Думаю при желании ты мог бы напрямую использовать эти классы. Но вряд ли захочешь отказаться от такого сахарку.
Не понял тебя.

Давай приведу конкретный пример из стандартной миграции Laravel для служебной таблицы:
PHP:
Schema::create('password_resets', function (Blueprint $table) {
    $table->string('email')->index();
    $table->string('token')->index();
    $table->timestamp('created_at');
});
string возвращает\Illuminate\Support\Fluent, и index не автодополняется.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Без этой фичи ide-helper не работает для моделей (точнее, частично).
Но в документации ide-helper про это ничего не написано: https://github.com/barryvdh/laravel-ide-helper

Теперь шторм практически не ругается, за исключением вещей вроде chained методов, например в Blueprint в миграциях.
Эта фичечка пошла с ларва форума, трен не упомню, но ее мне подсказали там. Я сам бомбил от того, что в этом сраном ларавеле не пашет автокомплит.
 
Сверху