Как научить php-storm думать

hell0w0rd

Продвинутый новичок
Ну собственно проблема с анонимными функциями и ArrayAccess
$this['config']->load('config.yml')->addIntoApp($this);
Вот такой код IDE не распознает, и повсеместно об этом напоминает.
Речь идет о Silex, возможно где-то надо PHPDoc подкорректировать, наведете на мысль? Кроме трейтов
 

fixxxer

К.О.
Партнер клуба
Не, тока если так

PHP:
class Foo {
 
    public function bar() {
        $this->get('x')->...
    }

    /** @return SomeClass */
    protected function get($key) {
        return $this[$key];
    }

}
еще как вариант вот эту штуку попробовать приспособить (нужен последний eap)
http://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata

Но вообще я в подобных случаях пишу просто
PHP:
/** @var SomeClass */
$config = $this['config'];
$config->...
это несложно :)
 

Redjik

Джедай-мастер
Не, тока если так

еще как вариант вот эту штуку попробовать приспособить (нужен последний eap)
http://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata
Попробовал? Для всяких DiC/Service Locator работает без тонны настроек?

ЗЫ. я обычно по alt+enter на переменной -> Add PHPDoc comment делаю
 

MiksIr

miksir@home:~$
Прикольно... а как заставить его работать с типом, когда у нас синглтон?
Вот Yii::app() как нить... Yii::app('') получается определить, а без параметров никак что-то.

Судя по коду видимо никак ;)
 

hell0w0rd

Продвинутый новичок
А вот еще вопрос, подскажите, как вызвать анонимную функцию записанную в переменную?
PHP:
$app['config_factory'] = function ($paths, array $replacement = array()) {
            return new Config($paths, $replacement);
        };
$app['config_factory']('/'); // не работает
Понятно, почему не работает, там ожидается название функции, а не анонимная функция, как быть?
PS хотя нет, не понятно:
PHP:
$test['1'] = function($test){
            echo $test;
        };
        $test['1']('blabla');
Вполне себе работает
 
Сверху