Вышел первый публичный билд PhpStorm 4.0

    Разработчики сообщают о множестве изменений. Выделим основные:
    • Языковая поддержка типажей. Что это такое, можно ознакомиться здесь
    • PHP code coverage теперь встроен для Xdebug и Zend Debugger
    • В инспектор кода добавлены новые правила для PHP и JS
    • Поддержка новых плюшек из ECMA Script 6 (Harmony)
    • Улучшена поддержка SASS & LESS, CoffeeScript
    • Изменения в UI
    • И много другое...


    Ссылки на скачивание:
    Mac OS X
    Unix
    Windows

    Комментарии 63

        +12
        Поддержка ASS? Не-не-не, я сам её поддержу без всякого PHPStorm'а.

        Но подозреваю, что имелось ввиду Sass/Scss.
          0
          Положительно оговорка по Фрейду. :)
            +3
            Позор моим сединам :(
          0
          С FuelPHP проблемы так и не поправили (
            0
            А что там за проблемы?
            0
            Может это чем-то поможет.
            Для CodeIgniter проблемы с автодополнением решились так:

            /**
            * @property CI_Loader $load
            * @property CI_Form_validation $form_validation
            * @property CI_Input $input
            * @property CI_Session $session
            * @property Vidsmodel $model
            * @property Ion_auth $ion_auth
            * @property CI_User_agent $agent
            * @property Twig $twig
            */

            Это вставляется перед контроллерами.
              0
              youtrack.jetbrains.com/issue/WI-9029
              Вы это имеете ввиду? Нечего там исправлять, это ошибка разработчиков фреймворка. Если хотят чтобы работало как надо — пускай делают код по стандартам, а не выдумывают свои мельницы.
              +4
              в релизе жду svn 1.7.
                0
                есть
                +1
                Жду исправления критических багов в code completion… Надеюсь, поскорее обратят внимание на полуторогодовалый критикал баг с несколькими соседствующими. Вроде, в последний раз нытья в комментариях в трекере было предостаточно — должны как-то отреагировать в конце концов.
                • НЛО прилетело и опубликовало эту надпись здесь
                    +3
                    Баги:
                    youtrack.jetbrains.com/issue/WI-2760 Undefined field: Inherited members in subclasses are marked as undefined when multiple potential base classes exist
                    youtrack.jetbrains.com/issue/WI-9277 Fields reported as undefined when overriding property type
                    youtrack.jetbrains.com/issue/WI-2450 Language injection into PHP literals: variables escaping vs target language
                    youtrack.jetbrains.com/issue/WI-8104 Auto complete fails when passing object to itself via use
                    youtrack.jetbrains.com/issue/WI-4016 Code Completion for «self» and «parent» keywords is missing
                    youtrack.jetbrains.com/issue/WI-2377 No autocompletion for php variables inside string with injected language

                    Фичи:
                    youtrack.jetbrains.com/issue/WI-322 Yii
                    youtrack.jetbrains.com/issue/WI-241 Symfony
                    youtrack.jetbrains.com/issue/WI-1063 Zend
                    youtrack.jetbrains.com/issue/WI-1174 CI
                    • НЛО прилетело и опубликовало эту надпись здесь
                        +1
                        Если «проверка» считает 90% кода неверным, то её отключают, потому что она совершенно не помогает искать ошибки. И в баге речь скорее не про инспекцию, а про автодополнение кода, которое в указанном случае не работает вообще. Согласитесь, иметь избыточные варианты лучше, чем иметь пустой список и вручную вбивать каждый символ.

                        Возьмём, например, JavaScript. Сейчас, кроме отдельных случаев (для встроенных типов, например), после ввода «.» вываливается список со всеми функциями и полями, которые хоть где-то в коде определены, плюс со всеми функциями и полями из подключенных библиотек. Как лучше: так или с пустым списком?
                        • НЛО прилетело и опубликовало эту надпись здесь
                            +1
                            Простой пример — тесты, создание фейковых классов, имеющих то же название, что и оригинальный по определению. Какой включать решается в рантайме и определяется, по сути, используемой точкой входа.
                              +1
                              Ещё совершенно нет возможности переименовывать классы в библиотеках. Ладно, если в одной класс с конфликтующим именем — можно у себя поменять. А если в двух одинаковый? Всё, автодополнение умирает.

                              Наверное, проблема должна быть решена пространствами имён, но пока это далёкое светлое будущее где-то там за горизонтом. Даже если все передовые фреймворки перейдут на пространства имён (что, собственно, и происходит), всё равно останутся тонны наследия царского режима, и на их искоренение и 10 лет запросто уйти может.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  0
                                  И? IDE станет легче оттого, что есть два класса \VolCh\Blog\Model\Post?
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                      0
                                      Это фейковый класс для теста, мок, стаб. Он обязан быть с тем же именем, что и оригинал, чтобы его можно было подставить на место оригинала, манипулируя require/include/autoload/include_path, но не трогая тестируемый код.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          0
                                          Стоит задача покрыть тестами существующий код, чтобы потом безболезненно проводить рефакторинг, в том числе и инвертировать контроль.
                                            0
                                            *процедурный спагетти код
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                И всё же, как быть с JS? Там ведь IDE практически никогда не в состоянии определить класс, а если и может, то не в состоянии полноценно понять, что же, собственно, в этом классе есть. По аналогии (принцип «нельзя умалчивать ошибки») получается, что списки автодополнения должны быть пустыми, а практически все вызовы подсвечиваться как неверные. :)
                      +1
                      Здорово, а ведь по ощущениям весьма недавно третья версия вышла. Активненько развивается IDE, радует.
                        +6
                        Собираюсь по-чесноку заплатить за PHPStorm.
                        Вот отличный пример успешного программного бизнеса: делай хорошие программы и за них будут платить деньги.
                          0
                          Вот если бы еще под каждую платформу была своя нативная версия, но это уже из области фантастики :)
                            +5
                            А зачем?
                              –3
                              Скорость? Отказ от виртуальной машины? Нативные контролы? Более глубокая интеграция в ОС?
                                +2
                                А зачем? Оно отлично работает без всего этого
                                  –1
                                  Работает, ну и пусть работает, зачем трогать :) Если бы все так думали, где бы мы сейчас жили…
                                    +3
                                    Но реально. Как на меня есть десятки более приоритетных вещей, на которые можно потратить ресурсы.
                                      –1
                                      В том то и дело, что всем надо только свое.
                            0
                            я тоже, но нужно дождаться когда скидки будут 50% )
                            0
                            Если у кого уже установлен PhpStorm 3 и собираетесь запустить 4ку, сделайте бекапы.
                            AP users should know the drill, but since this is a major upgrade – we’ll repeat:
                            BACK UP YOUR PROJECT INFO BEFORE 1st RUN

                            См. линк.
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                autoscroll from/to source раньше тоже было
                              +2
                              2 года уже работаю в PhpStorm под windows — отличная IDE. Вчера поставил на Mac поработал один вечер — работает отменно, а по сравнению с windows просто летает. Обычно первые EAP были сыроваты, но на сей раз не заметил никаких проблем, разве что было непонятно из какого каталога открыт файл, в breadcrumbs не хватало последнего каталога, видимо баг.
                                0
                                Для не больших правок еще использую coda, но не смотря на большой функционал phpStorm он работает намного быстрей и стабильней. Подсел пол года назад, и слезать не собираюсь.
                                –5
                                интересно, кто-нибудь, когда-нибудь додумается подсвечивать SQL в php-коде?
                                  +1
                                  Подсвечивают и подсказывают же.
                                    +1
                                    уже очень давно реализовано и работает
                                    0
                                    Я постоянно работаю в Netbeans. Решил поставить PHPStorm для сравнения. На мое удивление, угадыватель кода работает «на ура», сама ИДЕшка очень отзывчива. Пусть я написал тестовый код на пару классов, результат меня порадовал. В принципе, сто баксов это норм цена для индивидуальной версии. Правда еще не пробовал как она дружит с Xdebug, PHPUnit, запуском скриптов из коммандной строки.
                                    Правда, меня немного расстроили элементы интерфейса, при создании файла (пока вглубь не вникал), но это мне не помешало начать быстро кодить. Если понравится, то есть большая вероятность покупки.
                                      0
                                      С XDebug отлично дружит — очень хороший отладчик встроенный.
                                      PHPUnit к своему стыду не использую пока.
                                      Сижу на EAP версиях — они бесплатные — тоже хотела покупать, но все руки не доходят. А EAP обновляются автоматом — раз в месяц и бесплатных 30 дней хватает за глаза — после обновления отчет начинается заново.
                                        0
                                        На практике получается, что PHPUnit и xDebug почти взаимоисключающие вещи :)
                                        0
                                        В Storm интерфейс имхо не очень, многое рассчитано на горячие клавиши.
                                        Есть всякие прикольные фишки типа table>tr*3>td*4 потом Tab, также с любыми тегами.
                                        Также он хорошо переваривает всякое, когда и javascript и html и php в одном файле.

                                        Единственный минус у меня — я не нашел как создать удаленный проект не закачивая файлы по фтп. Ну т.е. чтобы можно было сначала скачать к примеру архивом, распаковать, потом ему указать папку и фтп и сразу начать работать, используя autoupload.
                                          0
                                          я делаю так:
                                          скачиваю архивчик -> распаковываю в нужный каталог -> указываю каталог как существующий код -> потом после индексации настраиваю Deployment на нужный сервер.
                                          0
                                          С PHPUnit тоже дружит, отдельный шаблон для конфигурации есть, вернее даже два, локально и на сервере.

                                          Есть консоль несколько оригинальная, но в ней можно bash запустить, если хочется привычного — только что проверил :). Правда автодополнение в консоли не работает похоже.

                                          Единственное что огорчает — шрифты в Юнити :(
                                          0
                                          Так и не починили баг. Либо использовать пробелы, либо испытывать постоянные мучения с курсором =( Этому багу уже минимум год. + До сих пор парсер не понимает сложение и вычитание цветов и строк.
                                            0
                                            Хтось я запускал под виндой, шрифты в некоторых окнах меня также огорчили
                                              0
                                              В проекте используется Smarty, и соответственно в в главном файле theme.tpl есть строка вида

                                              где — url сайта.
                                              Как заставить PHPStorm видеть этот css?

                                              Ещё один пример: класс загружается через $oOrderHandler = CatalogFactory::getInstance('Order'); где внутри идёт загрузка этого файла через require_once. Опять же, как заставить PHPStorm это распарсить?

                                              То же самое о конструкциях вида:
                                              $user= какой-то класс
                                              include $filename.«php»;
                                              а во втором $user->isAdmin() — и php storm ругается на undefined variable жёлтым цветом, и unknown class на isAdmin
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                  0
                                                  такое вот наследие от xoops.
                                                  0
                                                  чёрт побери, в первой строке css подключался через /themes/default/css/style.css
                                                    0
                                                    чёрт побери 2, там < $url > / style.css, где $url — переменная smarty.
                                                    0
                                                    Если я правильно понял вашу проблему, то надо сообщить IDE о типе вашей переменной, используя phpdoc во втором файле:
                                                    /** @var какой_то_класс $user */
                                                      0
                                                      Я бы сделал (собственно так и делаю, когда работаю c DI-контейнером или универсальным репозиторием) конкретную обёртку в виде фабричного метода или класса
                                                      class CatalogFactory
                                                      {
                                                      // ...
                                                        /* @return Order */
                                                        public static function getOrderInstance () {
                                                          return self::getInstance('Order');
                                                        }
                                                      }
                                                      
                                                      или
                                                      class OrderCatalogFactory
                                                      {
                                                        /* @return Order */
                                                        public static function getInstance () {
                                                          return CatalogFactory::getInstance('Order');
                                                        }
                                                      }
                                                      

                                                      Можно ещё проверку прикрутить с instanceof в виде выброса исключения или ассерта (в девелоп рантайме, естественно).

                                                      Второй случай использую только в нативных шаблонах, там использую /* @var User $user */, во всех остальных случаях, имхо, это ужасный говнокод, include/require использую только для деклараций классов/функций, никакого непосредственно выполняемого кода. Единственное исключение — перехват вывода, то есть по сути опять же в шаблонах.
                                                      0
                                                      Ссылки на скачивание не работают, актуальная ссылка на данный момент http://confluence.jetbrains.net/display/WI/Web+IDE+EAP

                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                      Самое читаемое