- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
class WP_Post {
public static function get_instance( $post_id ) {
...
}
public function __construct( $post ) {
foreach ( get_object_vars( $post ) as $key => $value )
$this->$key = $value;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+157
class WP_Post {
public static function get_instance( $post_id ) {
...
}
public function __construct( $post ) {
foreach ( get_object_vars( $post ) as $key => $value )
$this->$key = $value;
}
Вордпресс 3.9.1. Создать объект можно только из объекта. Ну или передав айдишник записи (что само по себе еще логично), но называется эта хуйня почему-то get_instance(), словно это синглтон.
* За исключением пары-тройки относительно редких случаев типа логгера или какой-нибудь фабрики.
У этой штуки есть несколько плюсов:
+ в отличие от синглтона единственность не торчит наружу, а является всего лишь деталью реализации;
+ всегда можно сделать так, чтобы часть инстансов работала с одним блоком данных, а часть - с другим (например поюзав thread local storage).
Можно так. А можно по-другому, например каким-нибудь приватным синглтоном, доступным только внутри реализации либы. И это абсолютно неважно, т.к. является деталью реализации такого класса. На уникальность тут ничего не намекает, кроме, возможно, заметок в документации в духе "не пидорасит лог-файл даже если создать 100500 инстансов log_source (при этом каждый из них не потокобезопасен)", или "не бойтесь создавать инстансы, когда они вам нужны, т.к. таблицу переводов они подгрузят всего один раз".
Фактически, синглтон с его get_instance() ничем не лучше r/o глобальной переменной. Даже хуже - больше писанины.
Да-да. Оно самое! Спасибо.
Можно подумать, что у звездолёта или в казарме нечего драить.
и вообще, это все детали реализации, которая сокрыта. вот без доки и сорцов нет же гарантии, что фабричный метод вернет тот же класс, возьмет из пула или будет плодить сущности.
а есть еще интересная штука, когда экземпляр один, но в зависимости от места\времени использования данные различны. что-то вроде прокси
заебался я играть в эти игры "назови код Паттерном": код одинаковый, а называется в зависимости от точки зрения по-разному
унылый маразм для странных людей, не могущих в свободные функции
Java и C# - унылый маразм от странных людей, не умевших в свободные функции.
ваш кэп
А по поводу шлюза надо ещё думать, подходят они под его определение или нет...
У шарпеев и жабистов их нет.
Там еще папа дохлый страус
Крестонуб -> Крестец -> Программист на плюсах -> Крестовик -> Крестоблядь -> Начальник кладбища -> Бог-кресторатор