Daily Archives: June 24, 2010
Пт и Пацаны – Олимпиада
PHP Best practice
Здесь я собрал некоторые лучшие практики по PHP, которым следую (ну или буду следовать 🙂
Для итерации по массивам, их изменению и фильтрации – учимся использовать array_* функции в пхп. Особенно лямбда-функции:
<?php
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$arr = array('that', 'is', 'this'); array_walk($arr, create_function('&$v,$k', '$v = $v . " yeah";'); print_r($arr); // outputs: // Array // ( // [0] => that yeah // [1] => is yeah // [2] => this yeah // ) // А вы бы сделали это циклом? Ай-ай-ай... ?> |
Используйте константы для того что никогда не меняется. Они парсятся в самом начале и лежат вообще в другом куске памяти чем обычные переменные. Конструкции вида $str = ‘some’ . STR_CONSTANT и выглядят к тому же лучше.
PHP includes caching
Сейчас озадачен проблемой кэширования инклюдов. Взглянул на наш проект, более 150 инклюдов, и это только на Zend Framework. Нашел ссылку про __autoload с кэширование, сейчас копаю в этом направлении.
Осталось понять, как автоматически парсить инклюды в исходном коде и вырезать их…
По сути вот моя проблема.
Возможные ходы по решению:
In order to preserve the API, I extended Zend_Loader and started overwriting functions such as Zend_Loader::_securityCheck(),
phpDocumentor и UTF-8 исходники
Как заставить phpDocumentator понимать русский текст в исходниках на UTF-8:
1. нужно править файл Setup.inc.php. В нем есть метод createDocs, где нужно исправить следующее
– if (stristr($ret, “utf-8”) !== “”)
+ if (stristr($ret, “utf-8”) === false)
{
$ret = utf8_decode($ret);
}
2. Пройтись глобальной заменой по всем (*.*) файлам документатора и заменить
charset=iso-8859-1’/>
на
charset=utf-8’/>
3. Необязательный (у меня и без этого заработало,
Произвольный html-код в Zend_Form
Возникла сегодня в процессе работы над одним проектом такая задача. Но нигде не смог найти решение.
Можно обрамить форму с помощью Zend_Form_Decorator_HtmlTag, а вот просто вставить код нельзя.
Zend_Form_Decorator_HtmlTag при создании получает переменную tag, например td, и выдает примерно следующее:
|
1 |
... |
А если убрать закрывающийся тэг, а из первого убрать треугольные скобки?
Мысля пошла…
И я разработал Zend_Form_Decorator_HtmlCode (cкачать можно тут).
Теперь в Zend_Form_Element мы можем добавить наш декоратор.
Пагинация в Doctrine (Использование SQL_CALC_FOUND_ROWS)
Начиная от версии 4.0 в СУБД MySQL появилась достаточно удобная возможность подсчета количества всех подходящих под запрос записей, когда количество записей ограничивается LIMIT’ом. При работе с поиском в БД, а так же при выборках из таблиц с большим количеством записей такой функционал просто необходим. В этой статье я расскажу, как можно использовать эту возможность в ORM Doctrine
Сразу хотелось бы сказать, что данный способ пагинации был выбран, т.к. необходимо было реализовать совместимость с текущим проектом,
Точные имена свойств модели в Doctrine
Эта статья посвящена точному(с учётом регистра) отображению названий колонок таблицы БД в свойства модели. Данная проблема актуальна для 1ой ветки ORM, т.к. во второй ветке она похоже уже решена. Но т.к. стабильным релизом на данный момент является версия 1.2.1 а версия 2 в стадии ALPHA4, то думаю, что эта проблема актуальная для многих пользователей ORM.
Если camelCase названия/алиасы колонок не используются в вашем проекте, то данное решение будет неактуально для вас.
Multi-Master репликация в MySQL
В данной статье будет рассмотрен процесс развертывания отказоустойчивой подсистемы баз данных на базе MySQL сервера.
Перед прочтением советую прочитать эту статью.
Zend Server Cluster Manager
Посмотрел вот ссылочку из Google-групп.
https://www.zend.com/en/products/server-cluster-manager/scalability
Теперь очень интересно, каков же реальный прирост, и что же на самом деле кроме обычного балансировщика предлагает нам Zend?
