- 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(), словно это синглтон.
wvxvw 02.07.2014 17:33 # 0
Fike 02.07.2014 17:36 # −1
wvxvw 02.07.2014 17:45 # 0
brutushafens 02.07.2014 23:09 # 0
Vasiliy 03.07.2014 13:06 # −2
bormand 03.07.2014 13:11 # −1
kegdan 03.07.2014 14:54 # −1
bormand 03.07.2014 16:14 # +1
kegdan 03.07.2014 17:42 # −1
blackhearted 04.07.2014 12:44 # 0
kegdan 04.07.2014 13:12 # 0
Vasiliy 04.07.2014 14:52 # 0
bormand 04.07.2014 14:53 # 0
* За исключением пары-тройки относительно редких случаев типа логгера или какой-нибудь фабрики.
kegdan 04.07.2014 15:50 # 0
bormand 04.07.2014 15:00 # 0
У этой штуки есть несколько плюсов:
+ в отличие от синглтона единственность не торчит наружу, а является всего лишь деталью реализации;
+ всегда можно сделать так, чтобы часть инстансов работала с одним блоком данных, а часть - с другим (например поюзав thread local storage).
bormand 04.07.2014 15:18 # 0
Vasiliy 04.07.2014 15:25 # 0
bormand 04.07.2014 15:30 # 0
Можно так. А можно по-другому, например каким-нибудь приватным синглтоном, доступным только внутри реализации либы. И это абсолютно неважно, т.к. является деталью реализации такого класса. На уникальность тут ничего не намекает, кроме, возможно, заметок в документации в духе "не пидорасит лог-файл даже если создать 100500 инстансов log_source (при этом каждый из них не потокобезопасен)", или "не бойтесь создавать инстансы, когда они вам нужны, т.к. таблицу переводов они подгрузят всего один раз".
bormand 04.07.2014 15:43 # 0
Фактически, синглтон с его get_instance() ничем не лучше r/o глобальной переменной. Даже хуже - больше писанины.
kegdan 04.07.2014 15:54 # 0
kegdan 04.07.2014 15:53 # +1
bormand 04.07.2014 15:54 # 0
Да-да. Оно самое! Спасибо.
kegdan 04.07.2014 15:55 # 0
guest 04.07.2014 15:56 # +3
kegdan 04.07.2014 15:59 # 0
guest 04.07.2014 16:00 # 0
bormand 04.07.2014 16:07 # +1
Можно подумать, что у звездолёта или в казарме нечего драить.
guest 04.07.2014 16:08 # +2
kegdan 04.07.2014 16:24 # 0
bormand 04.07.2014 16:27 # 0
kegdan 04.07.2014 17:04 # 0
brutushafens 04.07.2014 17:10 # +1
kegdan 04.07.2014 17:11 # 0
brutushafens 04.07.2014 17:19 # +1
kegdan 04.07.2014 17:29 # 0
brutushafens 04.07.2014 17:31 # +1
Lure Of Chaos 04.07.2014 16:37 # +1
и вообще, это все детали реализации, которая сокрыта. вот без доки и сорцов нет же гарантии, что фабричный метод вернет тот же класс, возьмет из пула или будет плодить сущности.
а есть еще интересная штука, когда экземпляр один, но в зависимости от места\времени использования данные различны. что-то вроде прокси
заебался я играть в эти игры "назови код Паттерном": код одинаковый, а называется в зависимости от точки зрения по-разному
roman-kashitsyn 03.07.2014 16:23 # +2
унылый маразм для странных людей, не могущих в свободные функции
bormand 03.07.2014 16:24 # +6
Java и C# - унылый маразм от странных людей, не умевших в свободные функции.
kegdan 03.07.2014 17:40 # −2
defecate-plusplus 03.07.2014 17:42 # 0
ваш кэп
kegdan 03.07.2014 17:50 # 0
roman-kashitsyn 04.07.2014 10:41 # +1
Qwertiy 04.07.2014 10:30 # 0
kegdan 04.07.2014 12:21 # 0
Qwertiy 04.07.2014 21:29 # 0
kegdan 04.07.2014 21:34 # 0
Qwertiy 04.07.2014 22:30 # 0
А по поводу шлюза надо ещё думать, подходят они под его определение или нет...
kegdan 04.07.2014 22:36 # 0
Qwertiy 04.07.2014 22:57 # 0
Vasiliy 04.07.2014 14:50 # +2
bormand 04.07.2014 14:55 # 0
У шарпеев и жабистов их нет.
Vasiliy 04.07.2014 15:26 # +1
Fike 03.07.2014 14:18 # 0
roman-kashitsyn 02.07.2014 18:22 # 0
Lure Of Chaos 03.07.2014 00:23 # 0
bormand 03.07.2014 05:48 # 0
kegdan 03.07.2014 10:59 # 0
defecate-plusplus 03.07.2014 11:00 # 0
kegdan 03.07.2014 11:03 # 0
wvxvw 03.07.2014 12:22 # 0
kegdan 03.07.2014 12:51 # −2
Там еще папа дохлый страус
Vasiliy 03.07.2014 13:08 # 0
Abbath 03.07.2014 13:15 # 0
brutushafens 03.07.2014 13:08 # 0
kegdan 03.07.2014 13:23 # −2
Крестонуб -> Крестец -> Программист на плюсах -> Крестовик -> Крестоблядь -> Начальник кладбища -> Бог-кресторатор
bormand 04.07.2014 10:52 # 0
kegdan 04.07.2014 12:22 # −2
bormand 04.07.2014 13:16 # 0
kegdan 04.07.2014 13:31 # 0