<rmcreative>

RSS

Все заметки с тегом «PHP»

Можно уточнить:

  1. PhpStorm 5

    12 сентября 2012

    PhpStorm 5

    Релизнулась очередная версия лучшей (по крайней мере для меня) IDE для PHP.

    Основные улучшения касаются PHP в общем, но, в этой версии добавили и немного для поддержки фреймворков. А именно поддержку MVC Symfony2 и Yii (ура-ура!).

    • В редакторе PHP переработаны внутренние механизмы распознавая типа переменных и полей классов, что привело заметному улучшению качества и скорости дополнения.
    • Куча дополнений к поддержке SQL и СУБД: рефакторинг схемы, редактирование хранимых процедур, генерация миграций, улучшенное дополнение SQL и другие.
    • Можно использовать свои правила для PHP CodeSniffer.
    • Поддержка стандартов кода Symfony2, PSR1/PSR2, Drupal.
    • «Live Edit» для PHP/HTML/CSS/JS.
    • Большое количество улучшений в редакторах JavaScript и CSS/Sass/LESS.

    Кроме того, сделано довольно много косметических изменений интерфейса.

    Для тех, кто приобрёл лицензию после 12 Сентября 2011, обновление бесплатно.

    До 14 Сентября можно приобрести IDE со скидкой. На обновление скидка не распространяется.

    25 комментариев
  2. Zend Framework 2.0

    6 сентября 2012

    Релизнулся ZF2. Сами разработчики особо отмечают:

    • Поддержку модулей.
    • Service Locator(IoC контейнер) и Dependency Injection контейнер.
    • События, включая observer, pubsub, signal-slot.
    • MVC на событиях и контейнерах.
    • Загрузчик классов с PSR-0 и class-map (явное сопоставление имя класса → путь).
    • «If you've worked significantly with ZF1, ZF2 will look alien to you». То есть это принципиально другой фреймворк и всё, что вы знаете про ZF1, можно выкинуть.

    Свои мысли по поводу того, что получилось у Zend выскажу позже, а пока

    8 комментариев
  3. Блокирование сессий в PHP

    21 июня 2012

    Как-то я потратил довольно много времени, пытаясь понять, почему десяток асинхронных запросов к PHP-скрипту выстраивается в очередь вместо того, чтобы отрабатывать параллельно.

    Чтобы показать наглядно, набросаем пару тестовых скриптов.

    test1.php

    <?php
    session_start();
    sleep(10);
    echo '1';

    test2.php

    <?php
    session_start();
    echo '2';

    Ничего необычного, правда?

    Теперь запустим их параллельно. Воспользуемся jQuery:

    $.get('/test1.php');
    $.get('/test2.php');

    В итоге получается вот такая картинка (это вкладка Net из Firebug):

    test1.php заблокировал работу test2.php.

    При использовании сессий «из коробки», данные хранятся в одном единственном файле, который оказывается заблокированным с момента вызова session_start и до окончания работы скрипта.

    В том случае, если сессия вам нужна только для чтения, или есть возможность записать всё необходимое перед медленной частью скрипта, можно её закрыть явно при помощи session_write_close():

    <?php
    session_start();
    session_write_close();
    sleep(10);
    echo '1';

    В этом случае мы получим желаемую картину:

    Если же необходимо писать в сессию после медленных операций, придётся сменить «коробочную» сессию на свою реализацию с неблокируемым хранилищем, таким, например, как база данных.

    Стоит отметить, что если при этом не позаботится о race condition, можно наступить на хорошие такие грабли.

    Материалы:

    14 комментариев
  4. PHP Performance, Rasmus Lerdorf

    14 июня 2012

    Похоже, материалы с DevConf централизованно выкладываться не будут и всё остаётся на усмотрение докладчиков. Многие спрашивают слайды отца-основателя PHP, Расмуса Лердорфа. Вот они:

    PHP Performance

    Работают не во всех браузерах, листаются стрелками. Материал действительно интересный. Всем советую.

    9 комментариев
  5. Слайды с DevConf 2012

    10 июня 2012

    7 комментариев
  6. Laravel

    5 июня 2012

    Как разработчику Yii, мне полезно знать, что происходит вокруг. Пару недель назад посмотрел фреймворк Laravel. О нём уже пытались написать на хабре. Было это в мае, но из песочницы пост не выбрался. Со второй попытки вроде получилось. Сообщество активно комментирует.

    По просьбам читателей, опишу, что я увидел в нём интересного и какие выводы были сделаны.

    Читаем

    28 комментариев
  7. XHProf для Windows

    31 мая 2012

    Вопреки распространённому мнению о том, что PHP-профайлер, созданный в недрах Facebook, работает только под Linux, есть билды и под Windows. Неофициальные, но вполне себе рабочие.

    При установке не забываем про совместимость билда расширения и PHP.

    11 комментариев
  8. XCallGraph

    29 мая 2012

    На днях был выложен на всеобщее обозрение ещё один инструмент для анализа результатов профайлинга, полученных при помощи XDebug. Событие весьма интересное, потому как старичок WinCacheGrind автором, похоже, заброшен, а WebGrind иногда нехватает.

    Написан инструмент на Java, поэтому потенциально кроссплатформенный (на данный момент имеются билды под Windows и Linux).

    Официальная страница

    XCallGraph обсуждается на форумах phpclub. Там же автор принимает пожелания и предложения.

    6 комментариев
  9. Подробное сравнение синтаксиса PHP, Perl, Python и Ruby

    30 марта 2012

    Целых две страницы с подробным сравением синтаксиса интерпретируемых языков программирования.

    10 комментариев
  10. PHP и юникод в стрэктрейсе

    12 марта 2012

    Какое-то время назад creocoder наткнулся на ????? вместо значения параметра в логах ошибок Yii. После анализа проблемы стало ясно, что нашёлся баг в PHP.

    Exception::getTraceAsString и Exception::__toString не работают с юникодом в значениях параметров при построении stacktrace. В результате для

    <?php
    function test($arg){
        throw new Exception();
    }
     
    try {
        test('тест');
    }
    catch(Exception $e) {
        echo $e->getTraceAsString();
        echo (string)$e;
    }

    получаем

    d:\web\usr\local\php54>php.exe d:\src\exception_wrong_trace\test.php
    #0 D:\src\exception_wrong_trace\test.php(7): test('????')
    #1 {main}exception 'Exception' in D:\src\exception_wrong_trace\test.php:3
    Stack trace:
    #0 D:\src\exception_wrong_trace\test.php(7): test('????')
    #1 {main}
    

    Обойти можно собрав строку руками на основе массива, полученного через Exception::getTrace.

    В Yii пока решили это не фиксить. Заслал баг на php.net.

    3 комментария