Самодостаточная библиотека Requests призвана восполнить недостаток в человеческих инструментах PHP для отправки HTTP-запросов. Авторы правильно посчитали, что у всех нас полно других интересных вещей, нежели разборки с занятным API cURL, все опции и параметры которого просто невозможно держать в голове. Да и не всегда cURL доступен. Cокеты обеспечивают лишь низкоуровневый доступ и требуют от программиста парсить все ответы HTTP самостоятельно.

Мне нравятся простые библиотеки, не перегруженные функционалом на все случаи жизни, но которые четко и быстро решают часто встречающиеся задачи. К таким библиотекам я отнес бы минификатор 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;
}

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

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

В PHP функция замены подстрок str_replace() может в качестве параметров принимать массивы, что позволяет за один раз ее использования произвести несколько замен. Для того, чтобы в Javascript сделать нечто похожее, придется расширить функционал объекта String: 

Наверх