Когда следует устанавливать переменные в классе

Слушай, когда переменные должны быть установлены в классе PHP?

<?php
    class MyClass {
        var $my_var;    // here? like var $my_var = null;
        function __construct(){
            $this->my_var = null; // or here?
        }
    }
?>
13.10.2009 14:38:21
6 ОТВЕТОВ
РЕШЕНИЕ

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

3
13.10.2009 14:40:56
Так это не имеет значения? В любом случае я хочу, чтобы все мои переменные были установлены в ноль при создании экземпляра объекта.
dotty 13.10.2009 14:46:43
Нет, это не имеет значения. Просто убедитесь, что они инициализированы, прежде чем вы собираетесь их использовать.
James 13.10.2009 14:48:56
Если вы хотите, чтобы они были установлены в null, тогда просто var $ my_var; будет делать (хотя вы должны использовать, например, public $ my_var; для PHP5)
Greg 13.10.2009 14:58:54
Ура Грег. Вы мне очень помогли :)
dotty 13.10.2009 15:09:29

я бы сказал

    class Foo 
    {
        public $bar = 'default';

        function __construct($custom_bar = null) {
            if(!is_null($custom_bar))
                $this->bar = $custom_bar;
        }
0
13.10.2009 14:41:22

Я думаю, что было бы лучше инициализировать их в конструкторе. Я обычно думаю, что это вопрос предпочтений разработчика, но с введением автоматически реализуемых свойств в C # 3.0, я думаю, что имеет больше смысла просто помещать всю инициализацию в конструктор (ы), потому что вы не можете предоставить значение свойству заявлено таким образом. А то, что вы инициализируете переменные, делает ваш код более читабельным.

1
13.10.2009 14:42:22
Ну, это, конечно, смешно ... понял, что это был .NET. Думаю, в эти дни я вижу все как псевдокод.
Mayo 13.10.2009 14:46:16

Зависит от использования переменной. ООП подчеркивает, что вы инициализируете свои переменные в конструкторе класса.

1
9.11.2011 13:53:39

Как только у вас будет достаточно информации, чтобы правильно их настроить.

0
13.10.2009 14:44:31

Для меня переменная, инициализированная при объявлении (вне конструктора), выглядит слишком похоже на константу. Это полностью предпочтение, но я выбираю инициализацию в конструкторе, если это вообще возможно.

0
13.10.2009 14:46:03