Преимущества использования конструктора? - PullRequest
6 голосов
/ 31 декабря 2008

В моем стремлении узнать больше об ООП в PHP. Я несколько раз сталкивался с функцией конструктора и просто больше не могу ее игнорировать. В моем понимании конструктор вызывается в тот момент, когда я создаю объект, это правильно?

Но зачем мне создавать этот конструктор, если я могу использовать "нормальные" функции или методы в качестве их вызываемых?

ура, Кит

Ответы [ 5 ]

28 голосов
/ 31 декабря 2008

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

10 голосов
/ 31 декабря 2008

Да, конструктор вызывается при создании объекта.

Небольшой пример полезности конструктора это

class Bar
{
    // The variable we will be using within our class
    var $val;

    // This function is called when someone does $foo = new Bar();
    // But this constructor has also an $var within its definition,
    // So you have to do $foo = new Bar("some data")
    function __construct($var)
    {
        // Assign's the $var from the constructor to the $val variable 
        // we defined above
        $this->val = $var
    }
}

$foo = new Bar("baz");

echo $foo->val // baz

// You can also do this to see everything defined within the class
print_r($foo);

UPDATE: Также был задан вопрос, почему это следует использовать, реальный пример - это класс базы данных, где вы вызываете объект с именем пользователя, паролем и таблицей для подключения, к которым будет подключаться конструктор. Затем у вас есть функции для выполнения всей работы в этой базе данных.

6 голосов
/ 28 декабря 2010

Идея конструктора состоит в том, чтобы подготовить начальный пакет данных для объекта, чтобы он мог вести себя ожидаемым образом.

Just call a method не является сделкой, потому что вы можете забыть это сделать, и это не может быть указано в синтаксисе как «обязательное перед началом работы», поэтому вы получите «сломанный» объект.

2 голосов
/ 28 декабря 2010

Конструктор предназначен для инициализации, выполняемой при создании объекта.

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

2 голосов
/ 28 декабря 2010

Конструкторы хороши для множества вещей. Они инициализируют переменные в вашем классе. Допустим, вы создаете класс BankAccount. $ b = новый банковский счет (60); имеет конструктор, который дает банковскому счету начальную стоимость. Они устанавливают переменные внутри класса или могут инициализировать другие классы (наследование).

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