В плагине wordpress есть такой код: Код (PHP): /** * Init */ public static function init() { $metaslider = new self(); } не могу понять, что он значит и почему в этой функции нету return Добавлено спустя 1 минуту 12 секунд: Этот код в дальнейшем связан с этим, как я понимаю: Код (PHP): add_action( 'plugins_loaded', array( 'MetaSliderPlugin', 'init' ), 10 ); Добавлено спустя 1 минуту 13 секунд:Прошу не отсылать к теме про позднее статическое связывание, я там ничего не поняла. Добавлено спустя 2 минуты 34 секунды: Хорошо если ещё и дядя с бородой объяснит. Его объяснения я всегда понимаю.
Catrina, вот пример и доки. Попробуй у себя запустить и посмотреть на дамп, ты должа догадаться что он делает. Код (PHP): <?php class A { static function create() { return new self(); } } class B extends A { } class C extends B { } $obj = C::create(); var_dump($obj); "У тебя есть борода, я скажу тебе да". ? Добавлено спустя 1 минуту 37 секунд: Почему нету return, может он там не требуется?
Код (PHP): new self(); создает объект текущего класса т.е.: Код (PHP): class FirstCls { public static function init() { return new self(); } } вернет объект класса FirstCls, так же можно писать за место self - static. не знаю насчет поздних и ранних связываний, но Код (PHP): public static function init() { $metaslider = new self(); } или это не полной код метода или он не делает ни чего, т.е. пустышка.
Если словами, то self() используется для разрешения ссылок на содержащий класс, в контексте которого вызывается метод.
Код (PHP): class FirstCls { public static function init() { return new self(); } } то же самое, что Код (PHP): class FirstCls { public static function init() { return new FirstCls(); } } Self в переводе с английского сам.
тут нужно не забывать одного, что при наследовании класса FirsCls классом SecondCls и если вместо self написать static поведение будет совсем другое. Поэтому, не всегда self и static одно и то же.
Да, вот так всё работает тоже Код (PHP): public static function init() {} Вот и я удивляюсь, что нету return... Добавлено спустя 2 минуты 43 секунды: К которому можно обращаться в самом же классе, угу?
В NetBeans можно навести на имя функции стрелку нажать правую клавижу и в списке меню будет найти случаи использвания. А может метод нигде не вызывает, как говорили выше, и он пустышка.
Допускаю, что это может быть мусор. Остаток после отладки, возможно return должен там быть, а возможно там подразумевалось self::$metaslider, хз. Если не лениво, ищи примеры использования и определяй что там должно быть. Плагины пишут обычные индийские парни, а не боги если код на публичном сервисе вроде github, то можно продолжить им pull request с исправлениями.
Я правильно понимаю, что Вордпресс бы переписать по хорошему на ООП, но сделать это невозможно, потому что куча плагинов и тем написана. И сейчас он содержит в себе горы устаревшего хлама. Угу? я права?
ну да, верно. хотя ты тыкала в код не самого вордпресса, а стороннего плагина. поэтому ход твоих мыслей неправильный, правильный только вывод )))
По части, что в этом есть какая-то нужда - нет, функциональный фреймворк WP не мешает использовать свои классы или библиотеки с классами. Вон joomla на ООП, а дефектного хлама для неё куда больше.
кое-кто уже переписывал код на современный лад. https://github.com/jgrossi/corcel автор предлагает использовать админку WP как есть, а публичную часть сайта (в терминах WP это "фронт-энд") реализовать через нормальные классы. все основные сущности включая "кастомные посты" реализованы в этом Corcel.
Эм.. ну вообще плагин на ООП, но я где-то читала, что вордпресс не на ООП, вот и подумала, что он уже так оброс ракушками, что поздно его переписывать.
Смешно когда пишут "на ООП". ))) Внутри Wordpress много где используется слово class. Это ООП? ))) Но сам вордпрессовский API это огромный набор функций в глобальном пространстве имен. И это нереально изменить. Потому что обратная совместимость дорогого стоит. Я бы обсудил что такое ООП, а что нет. Но это уже лютый оффтопик.
вот и молодец. Для людей не из мира PHP WordPress это такое пугало огородное. Если ты признаешся, что что-то там делаешь заказчику на WP, они тебя закидают какашками: "пхп головного мозга". Хотя на самом деле WP очень даже ООП, его модели можно расширять и события есть. Просто упаковка этих сущностей выглядит старомодно — в стиле PHP 4.