2010-08-04 6 views
2

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

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

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

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

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

ответ

4

подробно остановиться на Koo5's response, вы хотите сделать что-то вроде этого:

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 и constructors. Надеюсь, это поможет!

+0

Ты спас меня снова, Колин. Благодаря! –

+0

Рад, что я могу помочь, Кевин! –

0

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

+1

я получаю "Undefined переменной". Не могли бы вы дать больше информации? –

1

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

class yourController extends BaseController {} 

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

0

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

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; 
} 
Смежные вопросы