Laravel Laravel и PhpStorm

Absinthe

жожо
Читал документацию по Laravel и книги в поездках.
Пришло время делать свой проект.

Внезапно обнаружил, что код стандартного контроллера не нравится IDE:

PHP:
<?php
class HomeController extends BaseController
{
    public function showWelcome()
    {
        return View::make('hello');
    }
}
Как поступить с View, которая не определена?
Включить фасад в use? Есть ли более простые и более laravel-style способы дать PhpStorm понять это без use?

Кроме того, нашел ide helper. Однако он выполняется несколько секунд через watch'и. Можно ли сказать ему, что он не прав, и должен только дельты делать?
 

AmdY

Пью пиво
Команда форума
https://github.com/barryvdh/laravel-ide-helper он генерирует файлик и автокомплит начинает работать. Либо руками можешь сам прописывать алиасы из что в app.php, главное такой файл не подключается в проект, а нужен только для автокомплита. У меня привычка в базовых контроллерах переопределять такие вещи.
PHP:
/**
* PHPDOC
*/
protected function makeView(...) {
    return View::make(...);
}
 

fixxxer

К.О.
Партнер клуба
Кроме того, нашел ide helper. Однако он выполняется несколько секунд через watch'и. Можно ли сказать ему, что он не прав, и должен только дельты делать?
ide-helper:generate достаточно запускать при изменениях в конфиге фасадов (по сути - вотч на конфиг приложения. Если есть фасады на свой код - то еще и на них, но тут проще ручками - это редкое действие).

там еще есть ide-helper:models - вот тут как раз удобно watch на модели.
 

Absinthe

жожо
А как избавиться от Other declaration of class Foo exists?
Вторую декларацию создает ide-helper.
 

hell0w0rd

Продвинутый новичок
Absinthe, а по моему никак. Это идиотизм в phpstorm, нельзя добавить файл в noindex. Особенно весело с js, когда одна и та же библиотека может быть 25 раз в проекте
 

Absinthe

жожо
Absinthe, а по моему никак. Это идиотизм в phpstorm, нельзя добавить файл в noindex. Особенно весело с js, когда одна и та же библиотека может быть 25 раз в проекте
Добавить то можно, вот только смысла тогда не будет от ide-helper :D
И шторм все корректно обрабатывает. Вот только проблему хотел бы устранить.

Особенно весело с js, когда одна и та же библиотека может быть 25 раз в проекте
Зачем? :confused:
 

hell0w0rd

Продвинутый новичок
Absinthe, как зачем? магия npm:)
Это как это можно добавить в noindex? Можно совсем исключить. Я имею ввиду добавить свой код в noindex, раз его дублирует ваш хелпер.
 

fixxxer

К.О.
Партнер клуба
Absinthe, можно делать так:
Код:
$ ./artisan ide-helper:models --help
 --write (-W)          Write to Model file
 

Absinthe

жожо
Я имею ввиду добавить свой код в noindex
Эту идею я не оценил.

fixxxer, Какой-то ужасный костыль :)

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

fixxxer

К.О.
Партнер клуба
Эмм, у тебя проблема с моделями или с фасадами? С фасадами никаких other declaration быть не должно. UPD: туплю, будут, это я этот inspection выключил =)

Кстати, в laravel фасады можно не использовать. Вообще.
http://taylorotwell.com/response-dont-use-facades/
 

Absinthe

жожо
Кстати, в laravel фасады можно не использовать. Вообще.
http://taylorotwell.com/response-dont-use-facades/
И скатиться к DI? :)
Даже в той же симфони сессию проще получить. Просто взять из Request.

Вот хочется с одной стороны изящный фреймворк.
С другой стороны хочется нормальную поддержку в IDE.
И еще хочется, чтобы все костылями не обросло.
Как говорится, выберите любые два пункта.
 

fixxxer

К.О.
Партнер клуба
Не, кстати, я дважды туплю. Фасады же динамически создаются, через class_alias:

PHP:
<?php namespace Illuminate\Foundation;

class AliasLoader {
...
	/**
	 * Load a class alias if it is registered.
	 *
	 * @param  string  $alias
	 * @return void
	 */
	public function load($alias)
	{
		if (isset($this->aliases[$alias]))
		{
			return class_alias($this->aliases[$alias], $alias);
		}
	}
Откуда other declaration?
 

Absinthe

жожо
Да, с фасадами все нормально, а вот с моделями - не очень.
Более того, поля моделей не дополняются, хотя они описаны через @property.
 
Сверху