Category: php

  • An alternative for a DI-container in WordPress plugin development

    An alternative for a DI-container in WordPress plugin development

    Briefly, the dependency injection helps us to work with dependencies: makes them observable and enables to substitute them whenever we need it. My choice of preference is to inject dependencies through a constructor. Here, we have both the observability and the replaceability. As a bonus, the object is completely instantiated and ready for future work. […]

  • But these conflict with your requirements or minimum-stability

    Мучился сегодня с обновлением библиотеки в проекте. Сам только что поднял версию этого пакета, и теперь получал постоянно: Problem 1 – The requested package x/yz (locked at 1.2.3, required as ^1.2.4) is satisfiable by x/yz[1.2.3] but these conflict with your requirements or minimum-stability. Вообще ничего понять не мог, потому что изменений со стабильностью не было, […]

  • isset vs. array_key_exists

    Совсем недавно моё невежество привело к тому, что система, к разработке которой я прикладываю свои руки и по возможности голову, на несколько часов оказалась частично непригодна для использования. Несмотря на свой уже достаточно богатый опыт работы с PHP и давнюю сертификацию по этому языку (хотя многие к ней относятся с юморком, всё же это какая-никакая […]

  • json_encode vs. serialize

    Итак, продолжение серии бесполезных исследований. В этот раз мы сравниваем несколько разные по сути функции, которые, тем не менее, часто используются с одной целью. В этом исследовании мы хотим представить массив значений (не объектов PHP) в качестве строки. Это исследование инициировал на работе Фархад Вильданов. К сожалению, ему это не помогло, так как он имел дело […]

  • Разработка приложения с помощью Zend Framework 2

    1. Приложение необходимо разбивать на модули. Модуль включает в себя какую-то сущность и связанные с ней действия. Например, это может быть пользователь и контроллеры, отвечающие за вход/регистрацию, личный кабинет (настройки) и управление пользователями. Раньше я, разумеется, использовал модульность, но, как правило, модуль был достаточно весомым, он включал хоть и независимую (относительно) часть приложения, но все […]

  • autotest для PHP

    Я последнее время немало человеко-часов провел в экспериментах с Руби и Рельсами (об этом я еще напишу отдельный пост). Вернувшись назад в мир разработки на PHP мне стало очень не хватать одной простой утилиты, к которой я успел так привыкнуть. Называется она autotest. Проблема в том, что она для руби. Я быстренько поискал в Гугле […]

  • array_map(‘intval’, $array) vs. array_map(function($val) { … }, $array)

    И я продолжаю серию своих никчемных исследований… <?php ini_set(‘memory_limit’, ‘4096M’); $array = []; for ($i = 0; $i < 1000000; $i++) { $array[$i] = (string)$i; } $start = microtime(true); $tmp = array_map(‘intval’, $array); $end = microtime(true); echo ‘array_map(\’intval\’, $array): ‘ . ($end – $start) . PHP_EOL; $start = microtime(true); $tmp = array_map(function($value) { return (int)$value; […]

  • array_key_exists vs. isset

    Очередное маленькое бесполезное исследование скорости работы двух похожих функций. Код и результаты, как водится, ниже. <?php $array = range(0, 1000000, 3); $start = microtime(true); for ($i = 0; $i < 1000000; $i++) { array_key_exists($i, $array); } $end = microtime(true); echo ‘array_key_exists: ‘ . ($end – $start) . PHP_EOL; $start = microtime(true); for ($i = 0; […]

  • Обновление PHP в Mac OS X

    Сегодня мне рассказали про очень простой способ обновить PHP на локальной Mac OS X. Шаг 1. Сначала необходимо установить Xcode, если вы этого до сих пор не сделали. Запускаем его, идем в меню Xcode → Preferences… и выбираем тут закладку Downloads. Жмем “Install” напротив Command Line Tools. Шаг 1 завершен, в дальнейшем при очередном обновлении этого […]

  • function_exists vs. extension_loaded

    Одно небольшое бесполезное исследование провел сегодня на работе по долгу службы. Код и результаты его выполнения ниже. <?php $functionExistsStart = microtime(true); for ($i = 0; $i < 1000000; $i++) { function_exists(‘this_function_doesnt_exist’); } $functionExistsEnd = microtime(true); $extenstionLoadedStart = microtime(true); for ($i = 0; $i < 1000000; $i++) { extension_loaded(‘this_extension_is_not_loaded’); } $extenstionLoadedEnd = microtime(true); echo ‘function_exists ‘ […]