Мне нравятся простые библиотеки, не перегруженные функционалом на все случаи жизни, но которые четко и быстро решают часто встречающиеся задачи. К таким библиотекам я отнес бы минификатор Bender - класс, выполняющий простую и полезную функцию комбинирования CSS и джаваскриптов в единые файлы (один для всех CSS и один для всех javascript) с последующей их минимизацией на лету. В результате сайт грузится быстрее засчет снижения числа HTTP-запросов, уменьшая нагрузку на сервер и трафик. Bender написан на чистом PHP и не требует каких-либо сторонних библиотек на Java или Python.

Вывести строку запроса к базе данных, созданную через db_select(), можно командой print $query; где $query - объектная переменная запроса. Однако вместо аргументов будут выведены именованные параметры (placeholders) типа :db_condition_placeholder_1, :db_condition_placeholder_2 и т.д. Чтобы заменить их реальными аргументами, можно использовать функцию:

function _get_query_string(SelectQueryInterface $query) {
  $string = (string) $query;
  $arguments = $query->arguments();

  if (!empty($arguments) && is_array($arguments)) {
    foreach ($arguments as $placeholder => &$value) {
      if (is_string($value)) {
        $value = "'$value'";
      }
    }

    $string = strtr($string, $arguments);
  }

  return $string;
}

Она выводит запрос строкой в человекопонятном виде.

По-умолчанию кодировка, которая устанавливается при подключении клиента к серверу MySQL в конфигах назначена latin1. На веб-странице при этом будут отображаться знаки вопроса ???? вместо отечественных букв, если в базе данных текст сохранен, например, в кодировке UTF-8. Чтобы подключение скрипта к MySQL производилось изначально корректно, пропишем в файле /etc/mysql/my.cnf в секции [mysqld] следующие строки:

init_connect='SET collation_connection = utf8_general_ci'
character-set-server = utf8
init_connect='SET NAMES utf8'
skip-character-set-client-handshake

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

После нескольких дней традиционно-упорного долбания кода CCK и мучения Devel-модуля, проблема была обнаружена традиционно на поверхности, на которую обращаешь внимание только в самую последнюю очередь. Вся фигня в настройках PHP.

Предположим, что у нас есть в БД какие-то шаблоны, например, писем или сообщений пользователю, в которых динамически нужно менять определенные куски, допустим, вставлять текущую дату или вычислять, какое число будет через 10 дней. Т.е. в шаблоне есть места, куда необходимо прописать различные php-функции, которые бы при выводе шаблона выдавали необходимые значения. Эта возможность могла бы иметь вид: "Привет! Сегодня у нас {myphp date("d.m.Y")} , а через 10 дней это будет {myphp date("d.m.Y", strtotime("+10 day",time()))}".

Редирект с одного домена на другой с сохранением URL-запроса:

RewriteEngine On
RewriteRule ^(.*)$ http://www.iteka.ru/$1 [L,R=301]

L означает last - последняя инструкция, R - редирект, 301 - permanent, постоянный. 

У меня после обновления Жумлы до версии 3.2 фид блога категории потерял вменяемый вид: ссылка на материал стала черт знает какая, категория показывалась только текущая, игнорировав потомки и пропали даты материалов. Заглянул в libraries/legacy/view/categoryfeed.php , а там какие-то нововведенные "глупости". Пришлось ковырять до полного исцеления. Вот моя поправленная версия этого класса, кому надо:

На случай, когда админка Жумлы недоступна, например, по причине того, что мы наворотили в коде, чтобы включить отображение ошибок, следует отредактировать всего один параметр в конфигурационном файле (configuration.php):

$error_reporting = '6135';


Это все равно, что выставить E_ALL & ~E_NOTICE для вывода всех ошибок PHP, кроме замечаний (Notices).

Наверх