+4.53
8 читателей, 10 топиков

Принцип открытости/закрытости

Оригинал: http://www.sitepoint.com/the-open-closed-principle/

Должен признаться, когда впервые увидел академическое определение принципа открытости/закрытости, его смысл был для меня удивительно ясен. Я отбросил из определения весь технический жаргон, и принцип читался как заклинание, которое мы слышали раньше много раз: «Не ломай ядро».
Ну, правда, здесь существует некоторая двусмысленность высказывания, так как есть по крайней мере два общих подхода к поддержанию «ядра» в полной сохранности, позволяющие аккуратно расширять его функциональные возможности. Первый подход (вот почему я использовал намеренно термин «расширение») — Наследование. Наследование является, пожалуй, самым переоцененным приемом для повторной реализации. Такой процесс легко осуществим, но здесь существует определенный риск разрушить хрупкую иерархию моделей. Второй подход называется Композиция. Подход не так прост, как наследование, но это тоже довольно аккуратный способ расширить программный модуль, не меняя его.


Читать дальше →

Почему некоторые PHP-разработчики предпочитают статические API?

Оригинал: Why do some PHP Developers <3 Static APIs?

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

Читать дальше →

Getter’ы и Setter’ы — магия, которая должна знать свое место

Оригинал: Getters and Setters — a Magic That Should Know Its Place

Джозеф Кроуфорд, один из моих читателей, прочитал статью о том, как я не люблю писать getter’ы и setter’ы и предположил, что я могу использовать волшебные методы __get и __set.
Я скажу вам, почему это не очень хорошая идея, использовать их обычным способом. Кроме того, я собираюсь поведать вам историю, где они действительно оказались полезными, — речь пойдет о создании статических типов в PHP (динамический язык).
Для тех, кто не знаком с методами __get и __set — это два «магических» метода, которые работают следующим образом:
class Animal {
  function __get($property) {
    //...
  }

  function __set($property, $value) {
    //...
  }
}

$cow = new Animal;
$cow->weight = '1 ton'; // same as $cow->__set('weight', '1 ton')
print $cow->weight;     // same as print $cow->__get('weight');


Читать дальше →

PHP 5.5.0

PHPВ четверг, 20 июня 2013 года, вышел в свет PHP 5.5.0.
Предыдущая версия 5.4.0 вышла чуть более года назад — 1 марта 2012 года.

Что нового и интересного:
  • Zend Optimiser+ включён в состав дистрибутива в виде расширения OPcache extension.
  • Генераторы и coroutines.
  • Безусловная постобрабока после исключения — finally.
  • API для нормального хеширования паролей.
  • Разыменование массивов, сток и констант.
  • array_column. Вместо тысячи слов.
  • Получение полного имени класса (вместе с namespace) через конструкцию "::class".
    namespace app\models;
    class User{ /**/ }
    
    echo User::class; // \app\models\Users
  • В empty можно передавать функции и выражения. Всех давно раздражало отсутствие этой «фичи».
  • Поддержка нескалярных ключей в foreach.
  • foreachlist.
    $data = [[1, 2],[3, 4]];
    foreach ($data as list($a, $b)) {
        echo $a . ' - ' . $b;
    }

И много чего ещё. Полный список изменений можно посмотреть в официальном changelog.

Это отличная новость. Забираем, тестируем и радуемся новым фичам.

Ещё раз о filter_var

Очень часто приходится сталкиваться с простейшей задачей — валидацией данных из формы или любых других источников (кукисы, заголовок запроса, etc.) И каждый раз 95% разработчиков городят какие-то неимоверные велосипеды (регулярные выражения, «уникальные» алгоритмы хеширования паролей, etc). И каждый раз мне приходится рассказывать о такой невероятно полезной и нужной функции php — filter_var!

Итак, встречаем, встроенная функция валидации данных.

Читать дальше →

Перевод: Использование SSH и SFTP с языком PHP

Оригинал: Using SSH and SFTP with PHP

От переводчика: оригинальные листинги автора были немного доработаны.

В современном мире, где так много сторонних компонентов и программ для создания совместного доступа, важно понимать и использовать протоколы SCP и SFTP. Для PHP есть расширение-оболочка для библиотеки libssh2, которая реализует протокол SSH2. Она обеспечивает несколько функций, которые можно использовать для безопасной передачи файлов.
Перед тем как приступить к использованию этих функций, нужно установить пакет SSH2. Поскольку это PECL-компонент, процесс установки будет зависеть от вашей операционной системы. Следуйте инструкциям на php.net.



Читать дальше →

Проблема модификации даты через strtotime.

Добрый день.

Хочу поведать вам о небольшой проблеме с вычислением даты функцией strtotime.

Суть в следующем. Мне нужно было получить название предыдущего месяца. Ничего сложного в этой задаче нет:
$t = strtotime('-1 month');
echo strftime('%B', $t);

В большинстве случаев этот вариант отлично подходит.
Но не 31 мая.