jessepinkman010101
@jessepinkman010101
Варю синий код

Нужно ли оптимизировать вызов функции?

Привет.
Такой вопрос возник совершенно случайно и возможно очевидный, но я все же решил спросить пережде чем переписывать везде где я так делал)

есть функция которая например достает что-то из базы.

function getUserRole() {
 .... //тут запросы из базы
  return $user_role;
}


далее я просто вызывал эту функцию, иногда по несколько раз

return [
 'some_key' => getUserRole();
 'data' => [
    'user_role' => getUserRole()
 ]
];


Если в функцию getUserRole() добавить var_dump('test')
То оно выведет 2 раза

Но если занести функцию в переменную, то оно выводит лишь 1 раз:
$user_role = getUserRole();
return [
 'some_key' => $user_role,
 'data' => [
    'user_role' =>$user_role
 ]
];


Это значит, что каждый раз когда я вызывал функцию (как в первом примере) я делал запрос в базу и дополнительно нагружал ее, а во втором примере я лишь один раз вызываю и далее просто ссылаюсь на переменную, так ли это ?
Стоит ли переписывать все ?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 2
@qid00000000
Мало что знаю, но информацию найду в гугле
То, что ты поместил вызов функции в переменную - правильный подход к разработке. Так ты не насилуешь базу.

Почитай чистый код, там много хорошего.
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Можно использовать кеширование внутри подобных функций

function getUserRole() {
    static $user_role = null;

    if(is_null($user_role) {
        //запросы к базе и присвоение нужного значения в $user_role
    }

    return $user_role;
}


Дальше можно сколько угодно раз вызывать getUserRole() и получать один и тот же результат без повторных запросов в БД в рамках работы скрипта
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы