Как сделать переменную доступной на время запроса страницы
Я пытаюсь ограничить количество операций чтения базы данных на запрос страницы. В настоящее время каждый раз, когда срабатывает крючок get_avatar
, я вызываю get_option()
, который возвращает некоторые данные. Возвращенный $data
не изменяется в течение всего запроса страницы, поэтому у меня происходит много избыточных вызовов get_option()
(потому что get_avatar
срабатывает несколько раз на некоторых моих страницах).
function my_check() {
$data = get_option( 'blah' );
return $data;
}
function my_func( $avatar, $id_or_email, $size, $default, $alt ) {
if ( my_check() ) {
// Do something.
}
}
add_filter( 'get_avatar', 'my_func', 10, 5 );
Моей первой мыслью было использовать объектно-ориентированный PHP, чтобы сделать $data
переменной класса, но я чувствую, что класс перебор для этого простого сценария. Затем я подумал о том, чтобы сделать $data
глобальной переменной, но потом понял, что глобальные переменные - это плохо. Поэтому я исключил эти два подхода.
Есть ли другой способ сделать переменную $data
доступной на время запроса страницы? Моя цель состоит в том, чтобы избежать многократных звонков в get_option()
.
Примечание: Значение $data
может изменяться в промежутках между запросами страницы.
1 answers
Класс обеспечивает структуру, и если это то, что вам нужно сделать, то сделайте это. Альтернативой может быть глобальная переменная, что является плохой практикой и ее следует избегать (и делает надежное модульное тестирование практически невозможным)
Однако вся ваша предпосылка не нужна. WordPress уже хранит эту опцию в своих кэшах, поэтому второго вызова базы данных не происходит.
В противном случае да, класс или объект были бы ответом