<rmcreative>

RSS

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

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

  1. PhpStorm 3.0, первый EAP-билд 108.1343

    22 сентября 2011

    Вот и вышел первый EAP-билд долгожданной третьей версии полюбившейся многим разработчикам PHP IDE. Остаток дня был проведён за кодом уже в новом билде. Впечатления положительные. Что же интересного принесла нам свежая EAP? Среди просто нереального количества фиксов болячек разной степени важности стоит выделить следующее.

    Производительность

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

    Также обещают более плавную работу с большими проектами при использовании 32-х битной JRE. Как раз мой случай.

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

    Интерфейс

    Интерфейс претерпел значительные изменения. Сразу бросаются в глаза похудевшие табы, более компактные и продуманные диалоги. Linux и Mac тоже вниманием не обделили. Маку дали более приятный вид и fullscreen, линуксу drag&drop файлов и кучу фиксов.

    PHP

    • Автоматический перевод курсора в нужное место при записи ассоциативного массива с каждым элементом на новой строке (ура!).
    • Улучшили анализ синтаксиса и подсветку ошибок.
    • Различные улучшения в поддержке XDebug.
    • Добавили тулзу для анализа дампов профайлера XDebug.
    • Поправлены ошибки автоформаттера.
    • Поправили неприятное поведение при вводе кавычек.
    • В настройках можно выбрать конкретный интерпретатор PHP. Зачем, правда, пока не ясно.
    • Улучшили поддержку Twig.
    • Улучшили дополнение по namespace и в замыканиях.
    • Нормально реагирует на ENTER внутри PHPDoc, да и вообще много всего по PHPDoc (ура!)
    • Улучшена поддержка Phing.
    • Поддержка @return $this, @return self и @return static, что очень полезно для дополнения в Yii.

    JavaScript

    • Улучшенная поддержка синтаксиса библиотек.
    • Фиксы форматирования и анализа кода.
    • JSLint / JSHint

    CSS / HTML

    • Автоматический перевод курсора в нужное место при записи CSS лесенкой.
    • Фикснули оптимизацию перекрывающих друг друга записей.
    • Улучшили поддержку HTML5.
    • Поменяли диалог для выбора цвета. Добавили пипетку и возможность вводить цвет в hex. Убрали HSB. Попробую привыкнуть.
    • Zen Coding 0.7

    Разное

    • Добавили возможность исключать директории из заливки по FTP.
    • XSLT debugger

    Так как это первый билд третьей версии, стоит отбэкапить настройки перед обновлением. У меня лично обновилось всё без особых проблем, но мало-ли.

    51 комментарий
  2. PHP 5.4 beta1

    16 сентября 2011

    PHP 5.4 перешёл в статус beta, что не может не радовать. Официальный анонс ещё впереди, а пока можно почитать описание на хабре. Стоит отметить:

    Полный changelog тоже можно посмотреть.

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

    Пощупать в деле можно тут или здесь для Windows.

    2 комментария
  3. Unable to allocate memory for pool

    14 сентября 2011

    Буквально двадцать минут назад забился кэш APC на форуме yiiframework.ru. Расследование проблемы заняло некоторое время. Итак, что же делать при получении Unable to allocate memory for pool.

    • Сливаем архив с APC.
    • Берём оттуда apc.php и заливаем на сервер.
    • Открываем apc.php в браузере и смотрим, есть ли у нас свободная память.
    • Если нет, меняем в php.ini значение apc.shm_size.
    • Рестартим PHP.

    Проблема может быть и другого рода, но чаще всего это именно забитый кэш.

    14 комментариев
  4. unset

    5 сентября 2011

    Ещё одна интересная особенность PHP, которую хорошо бы знать, чтобы не терять много времени при встрече с ссылочным foreach:

    $val = '2';
    $arr = array('1', &$val);
    var_dump($arr);
    unset($val);
    var_dump($arr);

    Штука действительно очень зла, если про неё забыть. Максим напоминал мне больше, чем целый день…

    13 комментариев
  5. Осторожно, in_array

    3 сентября 2011

    Такая функция как in_array используется очень часто. Однако, есть особенности, на которые сегодня обратил моё внимание aktuba, дав мне вот такой кусочек кода:

    $array = array(0, 'one', 'two');
    var_dump(in_array('three', $array));

    Работает он немного неожиданно — выдаёт true. Всё дело в том, что строка three приводится к типу элемента массива перед сравнением. В нашем случае интересно приведение к числу.

    Если такое поведение нежелательно, можно заставить сравнивать элементы ещё и по типу, передав третий параметр:

    $array = array(0, 'one', 'two');
    var_dump(in_array('three', $array, true));
    24 комментария
  6. PhpStorm 2.1.3

    30 августа 2011

    Релизнулся стабильный PhpStorm 2.1.3. Последние внесённые исправления не привносят новых возможностей, но довольно важны так как прилично улучшают поведение автодополнения.

    Кроме исправлений добавлена возможность отсылать статистику по использованию разных фич IDE в JetBrains. Включить можно в File → Settings → Usage Statistics. Настоятельно рекомендую т.к. на статистику скорее всего будут ориентироваться, выставляя приоритеты.

    Ждём новых EAP с вкусняшками.

    12 комментариев
  7. Команде переводчиков документации PHP требуется помощь

    1 августа 2011

    Документация PHP на русском несколько лет назад пропала с сайта PHP как неактуальная. Русскоязычная команда переводчиков хочет исправить эту ситуацию, но т.к. объёмы документации по PHP очень внушительны, сделать это небольшой группой сложно.

    Итак, если вы владеете PHP, английским и русским, то у вас есть шанс помочь PHP и войти в историю, заполучив попутно почту с доменом @php.net и OpenSource-лицензию на PhpStorm (конечно, при значительном вкладе в общее дело).

    Подробности описаны в двух постах на хабре:

    2 комментария
  8. Symfony 2.0

    28 июля 2011

    Релизнулся Symfony 2.0. От первого Symfony осталось, пожалуй, только название.

    Фреймворк похож на Struts из мира Java, требует PHP 5.3, довольно быстр и очень гибок. Основные интересности:

    • Состоит из отдельных пакетов (Bundle). Собирается и разбирается.
    • Повсеместно использует Dependency Injection. Естественно, с контейнером.
    • Призывает строить приложения с использованием HTTP по полной.
    • Присутствуют веб-инструменты для профайлинга и отладки.
    • Имеются консольные генераторы кода.
    • Документирован.

    Официальный анонс

    9 комментариев
  9. PhpStorm 2.1.2 RC build 107.403

    14 июля 2011

    С последнего поста про PhpStorm вышло приличное количество билдов и даже пара релизов, в которых кроме обычных багфиксов и улучшения производительности добавили много вкусненького:

    2.1.2 RC build 107.403

    2.1.1 получился немного глючным. По крайней мере, на моих проектах ему плохело и раз в день отваливался autocomplete. 2.1.2 RC пока ведёт себя очень прилично: ничего не отваливается, работает как часы. Оно и понятно: поработали над ошибками очень продуктивно.

    Билды, о которых я не писал

    21 комментарий
  10. urldecode и кодировки

    9 июля 2011

    Сегодня неожиданно много времени провёл за изучением одного из репортов в трекере Yii. Первопричина оказалась совсем не той и крылась, как это часто бывает, в несоблюдении стандартов. Вообще тонкости две:

    1. PHP-шный urldecode работает напрямую с октетами (теми, что %AB), так что интерпретация строки зависит от кодировки скрипта. В случае Yii это UTF-8.

    2. Хоть RFC 3986 в районе 16-ой страницы и говорит нам, что «data should first be encoded as octets according to the UTF-8 character encoding», но всё-же достаточно большое количество ПО использует другие кодировки. Чаще всего это ISO-8859-1.

    То есть после декодирования мы можем получить либо UTF-8, либо что-то ещё. Это ещё скорее всего будет ISO-8859-1.

    Ну и решение — свой urldecode:

    /**
     * Improved variant of urldecode.
     * Properly decodes both UTF-8 and ISO-8859-1 encoded URIs.
     *
     * @param string $str encoded string
     * @return string decoded string
     */
    private function urldecode($str)
    {
        $str = urldecode($str);
     
        // is it UTF-8?
        // http://w3.org/International/questions/qa-forms-utf-8.html
        if(preg_match('%^(?:
           [\x09\x0A\x0D\x20-\x7E]            # ASCII
         | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
         | \xE0[\xA0-\xBF][\x80-\xBF]         # excluding overlongs
         | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
         | \xED[\x80-\x9F][\x80-\xBF]         # excluding surrogates
         | \xF0[\x90-\xBF][\x80-\xBF]{2}      # planes 1-3
         | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
         | \xF4[\x80-\x8F][\x80-\xBF]{2}      # plane 16
        )*$%xs', $str))
        {
            return $str;
        }
        else
        {
            return utf8_encode($str);
        }
    }
    3 комментария