Codeigniter: установить «глобальную переменную» - PullRequest
2 голосов
/ 04 августа 2010

Если я хочу установить переменную, к которой может обращаться весь мой контроллер, как мне это сделать?

Прямо сейчас, в каждой функции я устанавливаю

$id = $this->session->userdata('id');

Я бы хотел иметь возможность доступа к $ id из любой функции без ее определения для каждого контроллера. :)

Если есть лучший способ, я весь в ушах! Я нуб!

Ответы [ 4 ]

4 голосов
/ 05 августа 2010

Чтобы уточнить ответ Koo5 , вам нужно сделать что-то вроде этого:

class yourController extends Controller {

    // this is a property, accessible from any function in this class
    public $id = null;

    // this is the constructor (mentioned by Koo5)
    function __construct() {
        // this is how you reference $id within the class
        $this->id = $this->session->userdata('id');
    }

    function getID() {
        // returning the $id property
        return $this->id;
    }

}

См. Руководство для получения дополнительной информации о PHP properties и конструкторы .Надеюсь, это поможет!

1 голос
/ 09 августа 2010

Если с global вы имеете в виду область действия одного контроллера, приведенные выше ответы верны.Если вы хотите получить доступ к переменным из нескольких контроллеров, я рекомендую определить класс BaseController и затем расширить ваши обычные контроллеры для наследования от этого BaseController:

class yourController extends BaseController {}

Я использую это все время как для глобальных переменных, так и для методов.

0 голосов
/ 19 ноября 2013

Вы можете использовать этот метод тоже внутри вашего контроллера

function __construct() {
    // this is how you reference $id within the class
    DEFINE("userId",$this->session->userdata('id'));
}

И называйте это как:

function getID() {
    // returning the $id property
    return userId;
}
0 голосов
/ 04 августа 2010

Определить эту самую строку только в конструкторе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...