Передача параметров в метод класса (PHP)

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Slash
Администратор
Сообщения: 2113
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Передача параметров в метод класса (PHP)

Сообщение Slash » Сб ноя 05, 2016 10:26 am

Недавно мне потребовалось вставить языковые переменные, что находятся в массиве, в функции класса, то есть в методы, в некоторых методах необходимо использовать фразы. Массив фраз находится в отдельном файле и иклюдится к основному файлу, к которому инклюдятся многие файл, но суть не в этом, суть в том, что просто так в функцию не вставишь переменную, которая была создана за пределами функции, ее надо передавать. Как можно передать переменную в функции, рассказано в теме: Как передать переменную в пользовательскую функцию PHP, но примеры из этой темы мне не подошли, они скорее подойдут для одной функции, а не для несколько десятков методов...

Я решил написать функцию, которая будет передавать эти самые фразы, туда, куда надо. Сейчас расскажу, что я "намудрил". И так, допустим у нас есть массив фраз в отдельном файле:

Код: Выделить всё

$lang = array(
    'phrase_1' => 'Фраза 1',
    'phrase_2' => 'Фраза 2',
    'phrase_3' => 'Фраза 3'
);
Теперь пишем простенькую функцию:

Код: Выделить всё

function lang($key)
{
    global $lang;

    return $lang[$key];
} 
Теперь в любом методе (или функции) можно получить любую фразу из массива по ключу, используя функцию lang(), вот так:

Код: Выделить всё

lang('phrase_1'); 
Пример вывода фразы на экран:

Код: Выделить всё

echo lang('phrase_3');
На экране будет фраз с ключом phrase_3:
Фраза 3
При необходимости функцию можно зарегистрировать, при помощи функции spl_autoload_register() - http://php.net/manual/ru/function.spl-a ... gister.php

Код: Выделить всё

spl_autoload_register('lang'); 

Реклама

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя