Должен ли я разместить переменные в классе или конструкторе?PHP - PullRequest
5 голосов
/ 19 августа 2010

Мой вопрос (ы) является одним из лучших методов для ООП. Я использую Codeigniter Framework / PHP.

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

class Test() {

    var $my_data = array();

    function my_function() {

        //do something

    }

}

Можно ли так объявить $ my_data в классе? или это должно идти в конструкторе? По сути, каждая функция будет записывать в $ my_data, так что в некотором смысле это будет переменная всего класса (глобальная?

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

Ответы [ 4 ]

7 голосов
/ 19 августа 2010

Если вы хотите, чтобы $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.

0 голосов
/ 19 августа 2010

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

0 голосов
/ 19 августа 2010

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

0 голосов
/ 19 августа 2010

Здесь вы найдете ответ на мой вопрос 'var' Что делает ключевое слово PHP 'var'?

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