Во многих темах, которые я видел (включая TwentyEleven) и в примерах, которые я нашел в Интернете, при создании functions.php
файла для темы вся функциональность объявляется в глобальной области видимости. Чтобы уточнить, вот как выглядит типичный файл функций:
function my_theme_do_foo() { // ... }
function my_theme_do_bar() { // ... }
add_action( 'foo_hook', 'my_theme_do_foo' );
Мне кажется, что вещи могли бы быть "инкапсулированы" немного лучше, если бы использовался класс:
class MyTheme {
function do_foo() { // ... }
function do_bar() { // ... }
}
$my_theme = new MyTheme();
add_action( 'foo_hook', array( &$my_theme, 'do_foo' ) );
Преимущества второго подхода (на мой скромный взгляд):
- Более короткие имена функций
- Доступ к переменным экземпляра (самое большое преимущество IMO)
- Нет глобальных функций
Недостатки:
- Имя класса все еще может вызывать конфликты
- Не так ясно, чтобы «настроить» с дочерней темой (придется расширить родительский класс)
- Большинство тем не сделали это таким образом, так что вы бы противостоять тенденции
Я, наверное, упускаю из виду некоторые вещи, но мне интересно, почему бы не принять подход ООП? Это чувствует себя немного "чище" для меня, если что-нибудь. Возможно я ошибаюсь?
Я довольно новичок в разработке темы WordPress, так что простите меня, если это общеизвестно в сообществе WP :). Просто пытаюсь понять, почему вещи такие, какие они есть.