Преимущества использования конструктора?

StackOverflow https://stackoverflow.com/questions/403756

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

твое здоровье, Кит

Это было полезно?

Решение

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

Небольшой пример полезности конструктора заключается в следующем

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);

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top