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');


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

Google Drive on Linux

google driveLinux пользователи — если вам хочется большей целостности в плане софта (google chrome, google docs, google drive, etc), пожалуйста подпишите эту петицию, в которой заявлена просьба для Google на создание приложения Google Drive под Linux.

Узнать подробности и подписать петицию Вы можете здесь: http://www.change.org/en-GB/petitions/google-create-a-native-linux-google-drive-application

Это займет не больше минуты. Но пользу будет приносить ещё очень долго.

Github ограничил максимальный размер файла 100 мегабайтов

На конуне в блоге github новость о введении ограничения на максимальный размер файла в сто мегабайт.
С 24 июня пуш больших файлов будет отдавать reject для файлов размером больше сотни мегабайт и warning если файл больше пятидесяти мегабайт.

А Вы храните такие большие файлы на гитхабе?

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.

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

Перевод: Начало работы с PHPUnit, Composer и Omniture API

Оригинал: First Serious Attempts with PHPUnit, Composer, and the Omniture API

Мы работаем с системами аналитики веб-приложений от компании Omniture. У меня давно возникло желание запросить текущие данные из дата-центра Omniture для формирования некоторых внутренних отчетов. Omniture при составлении отчетов использует RESTful API, после непродолжительной работы с которым, я решил, что неплохо было бы написать специально для него библиотеку оболочки.

Недавно я прошел курс PHP Testing Bootcamp от Криса Хартджеса, и решил, что хочу написать библиотеку с помощью разработки через тестирование (TDD). Тут я понял, что сталкиваюсь с этим впервые. Кроме того, мне хотелось сделать библиотеку, совместимую с Composer. И для этого мне хватило уикенда. Когда выходные закончились, у меня на руках была почти законченная библиотека, которая требовала лишь внесения небольших изменений. Я многое узнал за эти два дня. Хочу поделиться с вами своим опытом.

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

Отправка email уведомлений в Yii2

Добрый день многоуважаемое сообщество!

Сегодня я хотел бы рассказать о новом расширении для отправки различных email уведомлений в yii2. Это простая обертка над PHPmailer. Суть её заключается в работе с двумя объектами — Postman (почтальон) и Letter (письмо).

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

Ещё раз о filter_var

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

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

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

Перевод: Итак, вы хотите писать тесты

Оригинал: So You Want to Write Tests

Меня часто просят дать несколько советов о том, с чего начинать написание тестов для PHP. Вы обратились по адресу, так как я представляю себя в качестве эксперта-ниндзя-рок-звезды-сенсея-самоуверенного-эгоиста по этой теме. Я долго боролся с придумыванием ответа, который должен поместиться в 140 символов Twitter-сообщения. И вот недавно мне стало очевидно, что данная тактика не принесет плодов. Излагаю свои мысли о том, как начать работу с тестированием PHP-кода.

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

Еще раз о росте PHP

Оригинал: PHP just grows & grows.

Аналитическая компания Netcraft занимается мониторингом веб-серверов с 1995 года, в числе прочего отслеживая применение широкого спектра скриптовых технологий в сети, — с 2001 года. Одной из таких скриптовых технологий является язык PHP, который в настоящее время отмечен компанией Netcraft на более чем 200 миллионах веб-сайтов.

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