2010-08-19 4 views
5

Мой вопрос (ы) является одним из лучших практик для ООП. Im использует Codeigniter framework/PHP.Должен ли я помещать переменные в класс или конструктор? PHP

У меня есть класс:

class Test() { 

    var $my_data = array(); 

    function my_function() { 

     //do something 

    } 

} 

нормально ли это декларировать $ my_data в классе, как это? или он должен идти в конструкторе? В основном каждая функция будет писать в $ my_data, поэтому в некотором смысле она будет переменной класса (глобальная?, Не уверена в терминологии)

Также, следует ли использовать var или private? var устарел в пользу объявления области переменных?

+0

По какой-либо причине вы все еще используете синтаксис PHP4? – Gordon

ответ

7

Если вы хотите $my_data быть доступны для всех методов в Test, вы должны объявить его на уровне класса.

class Test { 

    private $my_data1 = array(); // available throughout class 

    public function __construct() { 
     $my_data2 = array(); // available only in constructor 
    } 

} 

var устарела и является синонимом public. Если $my_data не должно быть доступно за пределами Test, оно должно быть объявлено private.

+2

Не могли бы вы также объявить их как: $ this-> my_data = array(); и иметь его в любом месте в классе? – EvilChookie

+2

@evilchookie - да, но лучше иметь список переменных, используемых в верхней части – Galen

0

Если он принадлежит «классу», поместите его в классе. Если он принадлежит «экземпляру класса», поместите его в конструктор. Это похоже на то, что вы должны использовать сеанс.

0

его штраф, если вы объявите переменную внешнего конструктора. На самом деле codeigniter не даст вам указать какой-либо параметр в вашем конструкторе. , и переменная автоматически присваивает значение при создании экземпляра класса. по умолчанию любая переменная php и функция с классом будут иметь открытый доступ. На самом деле, вам не нужно использовать модификатор доступа в кодеигниторе. В библиотеке он сам не определяет модификатор доступа.

Смежные вопросы