Новости phpStorm

fixxxer

К.О.
Партнер клуба
при этом умудрились за пару часов до релиза сломать автоиндент на [ ] ;)

у них QA вообще есть? )
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
кстати, народ, не забывайте голосовать за баги
 

Вурдалак

Продвинутый новичок

Вурдалак

Продвинутый новичок
Стыд и срам.

Не смог не высказаться. Ужас, блин. Как они котлины пишут с такими знаниями? )
Кстати, у автора репорта скриншот странный: http://youtrack.jetbrains.com/issue/WI-7026#viewimage=screenshot1.png?file=74-58389&v=1&c=true&rw=753&rh=597 Проблема с подчёркиванием $this->_blahblah не соответствует описанному багу.
 

Здыхлик

Kohaner
Команда форума
Кстати, у автора репорта скриншот странный: http://youtrack.jetbrains.com/issue/WI-7026#viewimage=screenshot1.png?file=74-58389&v=1&c=true&rw=753&rh=597 Проблема с подчёркиванием $this->_blahblah не соответствует описанному багу.
Он просто пример упростил походу. На скриншоте - результаты в реальном проекте.
 

keltanas

marty cats
Стыд и срам.
Не смог не высказаться. Ужас, блин. Как они котлины пишут с такими знаниями? )
Котлины пишут совсем другие люди. JetBrains же набирают всяких студентов и аспирантов с СПБГУ и ИТМО с их научными проектами и потом развивают в стенах компании. Так, к примеру, взялся MPS.
Могу предположить, что и Котлин - дело рук студентов/аспирантов, завербованных в jetbrains... )))
 

fixxxer

К.О.
Партнер клуба
Котлины пишут совсем другие люди.
Ну вот могли бы у них и уточнить, как устроено ООП в Java и всех языках, копирующих java-подход. За полтора-то года. =)
 

Absinthe

жожо
keltanas однако про это написано в самом видном месте документации.
Значит мы тоже лохи, как и девелоперы PhpStorm :D
 

fixxxer

К.О.
Партнер клуба
ну фиг знает, я этим постоянно пользуюсь, и это в общем-то очевидно, это же не джаваскрипт, а class based ооп -соответственно и область видимости определяется именно классом

например, в базовом классе может быть factory method, который создает наследника по имени и дергает, скажем, protected init()
 

fixxxer

К.О.
Партнер клуба
да и претензия не к тому, что не знают, все чего-то не знают

претензия к тому, что вместо того, чтобы разобраться, лепят отмазки:

это баг в пхп ооп (ага. и в джаве)
покажите кто это использует (я не использую -значит, никто. прекрасная логика для разработчика коммерческого продукта)

и все это тянется еще с phpstorm 3!
 

MiksIr

miksir@home:~$
Мне вот этот случай всегда казался.. м... антипаттерном, что ли. Создавать объект внутри этого объекта и лезть в его приватные свойства. Очень некрасиво выглядит. Так что даже понимаю, почему не спешат с фиксом.
 

fixxxer

К.О.
Партнер клуба
нет в этом никакого антипаттерна

PHP:
public static function constructById($id) {
     $instance = new static;
     $instance->id = $id;
     return $instance;
}
Область видимости, она про классы, а не про объекты.

Может, еще в clone() лазить $that в приваты - это антипаттерн? ;)

Это _совершенно_ нормально. Приведенный в репорте пример - разновидность того, что выше, просто чуточку сложнее. И это всяко лучше подхода C++ с их friend classes - вот уж где "code smells".
 

MiksIr

miksir@home:~$
С точки зрения записи кода - вы обращаетесь к свойству объекта $instance.
Декларируя, что "это свойство должно быть публичным, НО есть исключение", вы просто вносите немного дополнительной путаницы.
А можно было бы этот ID можно передать через конструктор.
 

fixxxer

К.О.
Партнер клуба
Ну или вот такой пример

PHP:
class Foo {

    public static function constructById($id, $mode) { 
         $self = new static;
         $self->id = $id;
         $self->mode = $mode;
         return $self;
    }

    public static function constructByProvider(Provider $provider) {
         $self = new static;
         $self->id = $provider->getId();
         $self->mode = $provider->getMode();
         return $self;
    }

    public static function constructByDatasource(Datasource $datasource) {
         $self = new static;
         $self->id = $provider->get('id');
         $self->mode = $provider->get('mode');
         $self->datasource = $datasource;
         return $self;
    }

}
Антипаттерн - это городить if instanceof в конструкторе.
 
Сверху