Небольшой обзор Zend Studio Neon Beta

    Вчера ушла в публичный доступ Beta версия, на мой взгляд, одного из самых функциональных и популярных редакторов РНР кода.
    Попробуем разобраться чем этот монстр, т.к. назвать его редактором кода язык не поворачивается, размером 350Mb может пригодиться.

    Первое, на что я обратил внимание — это скорость работы. По сравнению с установленной Zend 5.5 прирост чувствуется невооруженным глазом и приближается к нативным Win приложениям. Всё-таки Eclipse как базовая платформа для разработки коммерческих редакторов кода становится всё популярней. Прошлый год нам подарил Flex Builder, этот — Zend Studio.

    Теперь перейдем к функционалу.

    Из сразу замеченных активно пользуемых вещах:
    Поддержка SVN. В Zend Studio 5.5 был баг, из-за которого при настроенной работе с SVN-ом сам редактор начинал тормозить. Здесь такого не наблюдается а поддержка SVN реализована в двух видах: отдельной перспективе («SVN Repository Exploring») и в самом PHP Explorer-e (говоря по русски в списке файлов), причем последнее очень удобно.
    Не хотите юзать SVN/CSV? Local history спасет отца русской демократии. Весьма удобная вещь — показывает все изменения файла в проекте за последнюю неделю, или год, если подкрутить настройки.

    Полная поддержка PHPDoc-a. Причем само использование студии активно поддталкивает к использованию оного. Например если вы укажите

    /**
    * Описание функции
    * return MyClass
    */
    function getMyClass()

    то потом codeHinting будет знать что наша функция возвращает экземпляр MyClass.

    Сам codeHinting реализован достаточно хорошо и все найденные классы/функции в проекте автоматически подключаются. Плюсом также являются codeTemplates, в которые добавить свои темплейты очень просто. А при грамотной настройке могут помочь сэкономить кучу рабочего времени.

    В Zend Studio мне очень не хватало тегов FIXME и TODO которые отображаются на специальной вкладке Tasks, собираемые со всего проекта. Т.е. если необходимо поставить заметку о том что нужно что-то сделать или починить достаточно оставить комментарий вида
    //FIXME здесь нужно починить что-то
    и вы не забудете об этом. Сам нашел полторы дюжины таких заметок после импорта своего проекта :)

    Дебагер :) Одна из самых важных вещей ради чего просто стоит поставить зенд. Многие до сих пор производят отладку старыми дедовскими методами — через var_dump. На мой взгляд это всё равно что накачивать шину велосипедным насосом. Пока она маленькая и от велосипеда — всё хорошо. Но когда это всё разрастается в огромный трактор-проект — боже упаси.
    Профайлер. Рядом с кнопками Run и Debug добавилась 3-я: Profile, после использования которой Вам четко расскажут куда потрачено процессорное время во время выполнения скрипта. Останется только сидеть и оптимизировать.

    Анализатор кода. Тут самим нужно доработать напильником. Первым делом он нашел мне кучу невалидного HTML-я и XML-я. Первый меня не волновал, про невалидный XML я и так знал. Поэтому автоматическую валидацию этих вещей я отключил. Второй момент: Zend Studio ничего не знает о том что у вас на машине установлен Pear. Поэтому последний подключается через «Include paths» проекта. Плюс при валидации в 90% случаев он подсвечивает неверную строку в коде. Но на вкладке Problems строка указана верная, поэтому держим курс по ней. Кстати обнаружив и исправив около 300 варнингов в своем проекте — реально нашел несколько багов. Так что рекомендую, чтобы вкладка Problems была у вас пуста, что в дальнейшем поможет исправить ошибки. Даже несмотря на то что приходится ставить заглушки вида
    catch (Exception $e)
    {
    $e->getMessage();

    }

    Т.к. если сама переменная $e у Вас не обрабатывается, не избежать вам Warning-a «Variable $e appears only once».

    Рефакторинг. Эм. После того что я видел в IDEA — это назвать рефакторингом язык не поворачивается. Нам дали возможность переименовывать классы/функции/переменные и перемещать файлы. А студия поможет нам потом исправить источники, ссылающиеся на выбранный объект. В 50% случаев не работает. В общем сомнительное приобритение.

    Юнит-тесты. Тут ничего внятного сказать не могу — сам пользую SimpleTest, против включенного PHPUnit-a. Но просто пощелкав был приятно удивлен простотой создания тесткейса.

    Из минусов еще хочу отметить отсутствие word wrapa. Любители писать длинные строки — для вас это не есть гуд.

    Учитывая еще такие вещи, как Database Explorer, WYSYWIG редактор, CVS и еще много-много всего в стандартном наборе и расширяемость самой Eclipse — думаю у нас появился редактор #1.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 85

      0
      Аж захотелось посмотреть, а то сам сижу на Eclipse + phpeclipse =)
        0
        Рекомендую пересесть. Сам перепробовал огромное количество редакторов. На данный момент лучшие:
        1. Neon
        2. Studio 5.5
        3. NuSphere PHPEdit
          0
          Маленькое уточнение:
          3. NuSphere PhpED.

          PHPEdit это от WaterProof
            0
            Прошу прощения.
            Действительно Waterproof PHPEdit :)
              0
              Маленькое уточнение.
              PHPEdit это может быть и от WaterProof.
              А PhpED - все таки от NuSphere.
              И это единственный редактор, который по функционалу может действительно конкурировать с Зендом.
                0
                А Вы вот что этим хотели сказать? Если это цитата, спасибо. что касается выбора сред, то это бесконечный классический холивар.
                  0
                  Я хотел этим сказать что автор правильно назвал редактор и его производителя, а Вы его зачем то "поправили". Это объективная часть. Все остальное - мое ИМХО.
                    0
                    Упс, извиняюсь. Совсем глаза на }|{опе уже. Или работу пора менять или монитор/моск.
                    Был неправ, исправлюсь!
                0
                а вот интересно, в зенде есть mark occurences?
                0
                До меня только сейчас допёрло, что софтина то буржуйская и денюшку стоит.
                Посижу я дальше на своём любимом eclipse + phpeclipse
                  0
                  До декабря бесплатна
                0
                И некоторую часть под хабракат бы спрятать, думаю будет лучше =)
                  0
                  Уже :) Спс за замечание :)
                  0
                  Спасибо за статью.

                  Однако:
                  1. SVN. Прекрасно работало в ZDE, пользовался и был рад.
                  2. PHPDoc. Прекрасно работал в ZDE, также не нашел принципиальных различий.
                  3. TODO-лист был в ZDE, правда требовал проинсталлированного Zend Platform.
                  4. Дебаггер, профайлер в ZDE работали нормально, отличий принципиальных не нашел.

                  Собственно нового то только по сути оболочка... IDE. Остальное все осталось старое. Новый IDE дает нам прирост скорости, более удобный find/replace (его назвали рефакторингом), кучу настроек и плагинов.
                    0
                    Гм. В зенде профайлера как такового не было. Дебаггер - да, профайлера нет ) Приходилось юзать xDebug.
                      0
                      Вы говорите не было, а я им пользовался. Смысл в том, что кажется нужен был Zend Platform. Но факт остается фактом. Профайлер был и был неплохой, во всяком случае с его помощью я легко находил узкие места в проектах.
                        0
                        профайлер был. если юзался удаленный дебаг(а это удобно), то в меню можно было пользоваться "Debug->Profile URL"

                        и полного ZP не надо было, достаточно было удаленного экстеншна для дебага. он, кстати, бесплатен, и раньше входил в Zend Studio Server(и теперь лужит где-то в http://downloads.zend.com ). То что информацию про екстеншн больше не распространяют - наверно попытка всех перетащить на платный ZP
                        0
                        Unit-test все же упрощает работу с оным. Попрошу попрошу. Хотя да, могли бы вместо визивига сделать работу с веб-сервисами (soap wsdl всякими), к примеру, или еще чего полезного программистам.
                          0
                          SVN был врапером для консольного клиента, и нормально работать с ним было можно только, если вы на проекте в одиночку.
                          0
                          Автор, а можно по подробнее про Database Explorer. Хочется посмотреть на это, т.к. ищу альтернативу SQLyog. Гугл мне сказал что есть такая вещь но только в сборке MyEclipse, не подскажешь где взять отдельно сам плагин?
                            0
                            Честно говоря входящий в комплект не понравился. Если нужна альтернатива - копай в сторону EMS MySQL Manager. Хотя сам пользуюсь PowerDesigner + MySQL GUI Tools + sqlyog для генерации ченжсета.
                            0
                            Это бета, но ей уже реально можно нормально пользоваться?
                              0
                              пока не падала
                                0
                                Пользуюсь уже второй день. Нареканий пока нет, но нужно много настраивать под себя.
                                +1
                                в дополнение, хотя может это уже известно, в папке "\Program Files\Zend\Zend Studio Neon - Beta\docs" лежит user guide
                                  0
                                  Спасибо, не знал :)
                                  0
                                  Насчет рефакторинга - оно и понятно. Вы хотели чтоб ZS за вас догадывался что такое, к примеру

                                  define('ROOT_DIR', dirname(__FILE__) . '/');
                                  include ROOT_DIR . 'library/' . $someclass . '.php';

                                  и так далее? Это уж слишком. В java все проще будет, там вы пишете чего используете а чего нет и где копать. В гибкости это лучше для пхп, но в рефакте - нет.
                                    0
                                    В идеале - да :)
                                    Честно говоря жестко типизированные языки мне нравятся гораздо больше.
                                      0
                                      На вкус и цвет, как говорится... А вообще думаю что php идет к тому чтоб сделать как в питоне возможность галочки жесткой типизации. Не помню, было ли это в тексте "это будет в пхп 6", однако надо бы поглядеть.

                                      А сия гибкость мне нравится просто потому что можно граммотно разбить на файлы ваш скрипт и, к примеру, делать
                                      require_once 'Kost/Tree/Exception.php'
                                      throw new Kost_Tree_Exception('error with your tree');
                                      - это экономит время так как в остальных случаях о существовании Kost/Tree/Exception.php никто даже спрашивать не будет, уж тем более обрабатывать его. А это такой себе неплохой плюсик.
                                      +1
                                      А в php вы пишете __autoload и ему показываете где копать :)
                                        +1
                                        Ну это пока что нет. Вот если бы все более-менее придерживались стандартов кодирования тех же Zend или PEAR (они похожи между собой), то было бы полегче. А пока - всегда найдется что-то из-за чего придется этот __autoload делать и делать...
                                      0
                                      Да ради только одного повышения скорости работы стоит непременно пощупать. Спасибо за обзор.
                                        0
                                        Есть. есть различия. Для меня очень важные :)

                                        Например:
                                        - Автодополнение в Js. Т.е пишем: "window." потом клацаем Ctrl+space и наслаждаемся списком всех свойств/методов класса.
                                        - Тоже самое для css
                                        - Переключалка просмотра xml "Design"/"source"
                                        - Валидация HTML/CSS
                                        - Проверка на наличие подключаемых файлов. там выше писали про:
                                        "
                                        define('ROOT_DIR', dirname(__FILE__) . '/');
                                        include ROOT_DIR . 'library/' . $someclass . '.php';
                                        " >> не будет работать.
                                        Но, позволю себе заметить. Это не правильно. Ну т.е код будет работать. Но так лучше не делать.
                                        За пример я беру ZendFramework. там такого кода не встретишь.
                                        Т.е я хочу сказать, что лучше найти более красивое решение или пересмотреть архитектуру.
                                          0
                                          Автодополнение для js и css это отлично. Все время этого ждал. Буду качать даже только ради этого;)
                                            0
                                            понятное дело что такое лучше не делать, но в коде зенда можно найти файлы, подключаемый в середине кода (те же эксепшны), есть и адаптеры которые подключаются по мере необходимости, есть loadClass'ы, вообще являющиеся утилитами. И все это вещи нужные и правильные (в отличии от моего примера, само собой). Может частично ZS и маг, но всего он не умеет делать.
                                              0
                                              Кстати тоже вот вопрос:
                                              У меня есть один класс в котором я юзаю функцию __call
                                              Ну и естественно есл ия его начну использовать - то для него не будет работать автодополнение.

                                              Вопрос: Надо ли переписать класс таким образом что бы не было __call()?
                                              Я как то не видел нигде информации о том, рекомендуется ли использовать эту функцию или всё же стоит страться проектировать классы таким образом что бы таких ситуаций не возникало?
                                                0
                                                Глобально мысль сводится к тому что:
                                                Если редактор реагирует на ваш код неадкватно - надо ли его(код) переписывать? Или положится на то что "мой код просто очень хитрый и такое решение на самом деле гениально по сути. А то что IDE на него плюётся так это его проблемы.
                                                  0
                                                  Я думаю не стоит прогибаться под редактор, ведь все равно останутся ситуации когда ф-ция возврщает переменную какого-то класса, а так как php не типизированный - IDE теряется и внутренних ф-ций особо не находит. С этим должна бороться IDE и разработчики пхп (насчет строгой типизации должны подзадуматься чтоб была возможность такая), а не вы.
                                                    0
                                                    Насчёт этого в ещё в Zend Studio придумали решение.
                                                    Там когда обьявляешь функцию пишешь:

                                                    /**
                                                    * __getSomeObject
                                                    *
                                                    *
                                                    * @author josser
                                                    * @class someClass
                                                    * @access public
                                                    * @return <b>ObjectClass</b> $someObject
                                                    */
                                                    function __getSomeObject() {
                                                    ... }
                                                    И потом при вызове функции резальтат будет иметь тип ObjectClass и для него будет работать автодополнение.

                                                    Т.е некоторые вещи можно делать. И как правило это не какие-то хаки. а стандартные всеми принятые варианты реализации чего-либо. (Как например в вашем примере когда функция возвращает обьект).
                                                    А что делать с теми которые нельзя?
                                                    С той же функцией __call() или __autoload()?
                                                    • UFO just landed and posted this here
                                                        0
                                                        Ну тут расчёт на то что вы будете писать в Zend Studio
                                                        там есть шаблоны кода.
                                                        работает примерно так:
                                                        Вы пишете fnc. Выпадает списочек как в автодополнении. Жмакаем Enter.
                                                        И вставляется уже готовй шаблон с полями по которым прыгает курсор.
                                                        Так что сама IDE уже помомгает следовать этим правилам.
                                                      0
                                                      Прошу прощения за незакрытый тег и не совсем адекватно-понимаемые названия классов и методов.. :)
                                                      Но я надеюсь суть я передал.
                                                        0
                                                        Действительно, я в топике пропустил что идешку научили этому. Но вещь эта совсем даже стандартная и называется PHPDoc. Немного костыли, но уже приятно. (если оно в случае ошибки возвращает false, к примеру? надо описывать как mixed, а потом еще как-то?)

                                                        p.s.: ушел проверять на понимание @throws и прочего
                                                0
                                                > Даже несмотря на то что приходится ставить заглушки вида…
                                                По-вашему, засорять свой код в угоду не совсем умному аналайзеру — это правильно?
                                                  0
                                                  Эм. Если взять за сравнение что хуже - такая безобидная заглушка, или реально непроинициализированная переменная - то я выбираю первое. По крайней мере четко знаешь чего от него ожидать.
                                                    0
                                                    А зачем эти беды сравнивать? Инициализируйте переменные, не пишите мусора, и будет вам щастье. Пускай они лучче аналайзер поправят, чтобы он на пустой метод обработки исключения не ругался.
                                                      0
                                                      Как поправят - будет щастье :) А пока пусть так.
                                                        0
                                                        Пускай. Только ведь по-хорошему код в первую очередь пишется для программиста, а потом для интерпретатора. А про аналайзер и вообще речи не идет. Что подумает про Ваш код программист, который не пользуется Zend Studio?
                                                          0
                                                          Тут согласен. Возьмем другой аспект. Комментарии. Они же коду не мешают, а улучшают код. Так и здесь - у меня появился еще один инструмент. Но он требует пары десятков ниначто не влияющих затычек по всему проекту. Я счимтаю что адекватная цена.
                                                  +1
                                                  А Вы с Eclipse PDT знакомы?

                                                  Я вчера полчаса пытался найти отличия Neon от PDT с плагинами - так и не нашел. Хочу еще чье-нибудь мнение узнать :)
                                                    0
                                                    Эм :)))
                                                    Тут не пробовали смотреть? http://www.zend.com/products/zend_studio…
                                                      +1
                                                      Пробовали. Лапша на уши от маркетологов, а не серьезный список.
                                                        0
                                                        К сожалению ничего лучше предложить не могу :( Может вы сами напишите сей опус?
                                                          0
                                                          Может и напишу, только надо побольше времени с Неоном посидеть.
                                                            0
                                                            Напишите, работает ли подсветка статических методов в классах, а то Zend Studio светится нормально, а в Eclipse PDT - что то ничего не светилось. То есть вопрос, подстветка в Neon'e унаследована от Зенд студии или от эклипса пдт...?
                                                              0
                                                              Вроде подсвечивается :) Завтра на работе гляну.
                                                      0
                                                      Да-да, поддерживаю. Я уже второй год работаю только с PDT. (Сказать по правде, когда узнал, что PDT ZEND разарабатывают, был весьма и весьма удивлен).

                                                      Из перечисленного в статье к Eclipse нельзя так запросто прикрутить профайлер. Все остальное, ну почти все, это достоинства не Neon, а Eclipse в целом и PDT в частности.

                                                      HTML, CSS и JS? Это WTP. База данных? Это DTP. PHPDoc и тайпхинтинг? Это из PDT.
                                                      //FIXME и //TODO? Это еще из JDT тянется.
                                                      PHPDocumentor и PHPUnit как external tool в Eclipse подключается на ура.
                                                      etc

                                                      Главная разница - PDT вы накачиваете сами, Neon уже прокачан. Это, безусловно, здорово, но все вышееперечисленое не позволяет говорить о Neon, как о "революционном" продукте.

                                                      Сдается мне, Zend хорошо все продумали: был у них Zend Studio; они пишут открытый и бесплатный PDT; захватывают значительную часть рынка PHP IDE; переезжают сами на PDT; теперь пользователи PDT легко и безболезненно могут переходить на Neon, как только денег накопят =)

                                                      Стратегически - на 5+

                                                      P.S. PDT, кстати, не заморожен - новые билды продолжают появлятся
                                                      0
                                                      божее.. эклипс... и его АДСКОЕ КОНФИГУРАЦИОННОЕ ОКОШКО.... найти чтото с первого раза просто нереально..
                                                        +1
                                                        Тогда notepad++. Всё просто до безобразия.
                                                        Кстати там довольно просто всё.
                                                          0
                                                          В конфигурационном окошке имелось ввиду :)
                                                            0
                                                            юзаю VIM ;)
                                                            кросплатформенность и все такое :)
                                                              0
                                                              хотя нотпад++ тоже хорош, быстро открывается.. чтото подправить очень удобно.
                                                                0
                                                                если что-то небольшое поправить то vim хорош. но если дофига файлов - то это похоже на насилие над самим собой.
                                                                  0
                                                                  если много файлов - всегда сложно :)
                                                            0
                                                            А для любителей Перла есть что-нибудь сопоставимое по мощи? (под Linux)
                                                              0
                                                              Любители перла ставят эклипс и ищут подсветку синтаксиса :) Плюс экстэншны какаи хотят :)
                                                                0
                                                                *какие :)
                                                              0
                                                              Кстати, на "В Zend Studio 5.5 был баг, из-за которого при настроенной работе с SVN-ом сам редактор начинал тормозить. " - ссылку можно? А то у меня эти тормоза тоже наблюдались.
                                                                0
                                                                  0
                                                                  Нет, на описание бага с svn.
                                                                    0
                                                                      0
                                                                      Ага, спасибо. Я как то вылезшие тормоза не связал с svn и винил во всем самбу, на которой файлы проекта были.
                                                                    0
                                                                    Прошло время и ссылка не работает, где бы взять Neon, не посоветуете?
                                                                  0
                                                                  Я так понял, что они встроили SVN в Zend Studio Neon? Интересно, зачем. Есть ведь плагин Subclipse, который прекрасно работает.
                                                                    0
                                                                    На всё воля Аллаха - решили разработчики и встроили :) С subeclipse не работал, поэтому сравнить не могу :(
                                                                      0
                                                                      Попробуйте. У меня вообще никаких проблем с ним не было. Прекрасно работает с любыми типами файлов, с любыми view. Очень удобен.
                                                                        0
                                                                        Просто так нельзя. Они тогда могли бы и Eclipse не использовать, а продолжать писать свою Zend Studio с нуля. Огромный потенциал Eclipse — именно в плагинах. Зачем встраивать в свой и без того монструозный плагин дополнительную функциональность, для которой уже существуют вполне стабильные и мощные решения.
                                                                          0
                                                                          Да в принципе и их плагин отлично работает. Пока не жалуюсь :) А что-то перенастраивать пока рабоатет - увольте-с.
                                                                            0
                                                                            Нет, ну это вполне наш подход — если работает, не трогать! :)

                                                                            Но я имел в виду, что сами разработчики были не правы, они не поняли главного принципа Eclipse. А это печально.
                                                                              0
                                                                              Может с лицензией что-то не так :) Не знаю. А юзают они svnkit (svnkit.com)
                                                                      +1
                                                                      В Zend Studio и раньше были phpdoc и profiler.
                                                                        0
                                                                        Грубо говоря это та же Aptana к которой добавили Zend Framework.
                                                                        Что-то трудно назвать этого монстра удобным продуктом для разработки, кроме автоматизации работы с фреймворком больших удобств в работе не наблюдается в сравнии с тем как "быстро" эта каракатица работает, у меня не слабый компьютер на коре 2 дуо и даже он бедняга втыкает при сохранении проекта всего на 10к строк. Просто Zend Studio как по мне более живучий и удобный продук, не смотря на перечисленные недостатки.
                                                                          0
                                                                          Почему то у меня в этом неоне для PHP скрипта не работает outline, то есть список функций в классе не отображается. Я что-то не так делаю? Где там покрутить можно?
                                                                            0
                                                                            Может быть кто-то знает как можно руссифицировать zend neon?
                                                                            В 5.5 версии перевод языка был посредством изменения локали в файле desktop_options.xml.
                                                                              0
                                                                              Всетаки в анализаторе кода достаточно много глюков. Например, передача параметра по ссылке:

                                                                              function x(&$param){
                                                                              $param = 123;
                                                                              }

                                                                              Выдает ванинг "переменная $param не используется". Если его убрать, получим другой варнинг "неиспользуемый параметр функции".

                                                                              Конструкция:

                                                                              class X{
                                                                              public $var;
                                                                              function f(){
                                                                              $this->var++;
                                                                              }
                                                                              }

                                                                              выдает варнинг "Результат выражения $this->var++ не ипользуется". Если заменить на $this->var+=1, то всё ок.

                                                                              И, кстати, как отключить проверку валидации HTML - реально задолбала?

                                                                              Only users with full accounts can post comments. Log in, please.