На самом деле есть ещё одно несказанное использование static, доступное по умолчанию с PHP 5.4:
class A
{
private $item;
public function foo()
{
// здесь колбэк по умолчанию замыкается на this контекста,
// с которого он был вызван (по умолчанию с PHP 5.4)
$callable = function () {
return $this->item * 2;
}
}
public function bar()
{
// однако если указать static, то замыкаться на this вызванного контекста
// колбэк уже не будет
$callable = static function () {
return $this->item * 2; // кинет fatal error
}
}
}
Подводя итог, скажу, что целью статьи было вовсе не создание системы логов как таковой, а в первую очередь донесение до читателя той мысли, что не всегда ставить селективный атрибут влево – это хорошо.
Логи выступали лишь в качестве примера, и судя по комментариям, пример получился неудачный. Но на данный момент ничего лучше в голову не приходит
Дык это и статья не для седьмой версии, в которой всё за тебя интерпретатор провалидировал.
Поэтому про жуть и мрак в плане «к чему пользоваться старьём» – тут согласен.
Если вы что-то другое имели ввиду — то распишите подробнее.
С чего вы взяли вообще что конечный слэш является частью пути? Где, в какой спецификации, в какой файловой системе это так?
Это просто пример. Можно его сколь угодно доводить до идеального состояния, но конечной целью было не создать целое приложение, а протестировать работоспособность одного трейта на примере пары классов.
Почему вдруг для трейтов нужна отдельная папка, а для неких «моделей» — другая? Откуда берется такая структура?
Можно запихнуть всё и в одну папку models, нет никаких проблем)
Искренне не понял, причем тут слово «Полиморфизм». Возможно вы имели в виду что-то другое? Например «тайп-хинтинг»?
Да. Всё же я имел ввиду определение типов.
А под словом «полиморфизм» здесь предполагалось то, что один и тот же трейт можно использовать во всех классах, к которому трейт присоединён.
Поправлюсь в терминологии.
На самом деле есть ещё одно несказанное использование static, доступное по умолчанию с PHP 5.4:
Надо было конечно сразу исправить, но лучше поздно, чем никогда)
Логи выступали лишь в качестве примера, и судя по комментариям, пример получился неудачный. Но на данный момент ничего лучше в голову не приходит
Под модификацией данных я имел ввиду не update/delete, а insert конечно же. Свой старый комментарий изменить не могу
Поэтому про жуть и мрак в плане «к чему пользоваться старьём» – тут согласен.
Если вы что-то другое имели ввиду — то распишите подробнее.
Это просто пример. Можно его сколь угодно доводить до идеального состояния, но конечной целью было не создать целое приложение, а протестировать работоспособность одного трейта на примере пары классов.
Можно запихнуть всё и в одну папку models, нет никаких проблем)
Согласен, ничем.
(Если не считать того, что всё за тебя уже настроено заранее)
Выглядит более элегантно по сравнению с предыдущим вариантом.
Это в трейте и реализовано.
Да, про полиморфизм я не к месту написал, признаю.
Многие хостинг-провайдеры до сих пор остались в прошлом веке со старыми версиями.
Да. Всё же я имел ввиду определение типов.
А под словом «полиморфизм» здесь предполагалось то, что один и тот же трейт можно использовать во всех классах, к которому трейт присоединён.
Поправлюсь в терминологии.
Просто дурная привычка пилить всё на скорую руку.
Добавил в статью автозагрузку классов вместо include-ов.