Для чего используется функция __construct?

Я замечаю __construct много с классами. Я немного читал и занимался серфингом в Интернете, но я не мог найти объяснения, которые я мог понять. Я только начинаю с ООП.

Мне было интересно, может ли кто-нибудь дать мне общее представление о том, что это такое, а затем простой пример того, как он используется с PHP?

__construct был введен в PHP5, и это правильный способ определить ваши, ну, конструкторы (в PHP4 вы использовали имя класса для конструктора). Вы не обязаны определять конструктор в своем классе, но если вы хотите передать какие-либо параметры при построении объекта, вам понадобится один.

Пример может выглядеть так:

 class Database { protected $userName; protected $password; protected $dbName; public function __construct ( $UserName, $Password, $DbName ) { $this->userName = $UserName; $this->password = $Password; $this->dbName = $DbName; } } // and you would use this as: $db = new Database ( 'user_name', 'password', 'database_name' ); 

Все остальное объясняется в руководстве по PHP: нажмите здесь

__construct() – это имя метода для конструктора . Конструктор вызывается на объект после его создания и является хорошим местом для ввода кода инициализации и т. Д.

 class Person { public function __construct() { // Code called for each new Person we create } } $person = new Person(); 

Конструктор может принимать параметры обычным образом, которые передаются при создании объекта, например

 class Person { public $name = ''; public function __construct( $name ) { $this->name = $name; } } $person = new Person( "Joe" ); echo $person->name; 

В отличие от некоторых других языков (например, Java), PHP не поддерживает перегрузку конструктора (то есть наличия нескольких конструкторов, которые принимают разные параметры). Вы можете добиться этого эффекта, используя статические методы.

Примечание . Я получил это из журнала принятого ответа (в момент написания).

Другой способ объявить конструктор. Вы также можете использовать имя класса, например:

 class Cat { function Cat() { echo 'meow'; } } 

а также

 class Cat { function __construct() { echo 'meow'; } } 

Являются эквивалентными. Они вызывается всякий раз, когда создается новый экземпляр класса, в этом случае они будут вызываться с помощью этой строки:

 $cat = new Cat(); 

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

class_cat.php

 class cat { function speak() { echo "meow"; } } 

somepage.php

 include('class_cat.php'); mycat = new cat; $speak = cat->speak(); echo $speak; в include('class_cat.php'); mycat = new cat; $speak = cat->speak(); echo $speak; 

Где в примерах @Logan Serman приведены примеры «class cat», предполагается, что каждый раз, когда вы создаете новый объект класса «cat», вы хотите, чтобы кошка «мяукала», а не ожидала, что вы вызовете функцию, чтобы сделать ее мяуканью.

Таким образом, мой разум явно думал о том, что метод конструктора использует неявность, и это затрудняло понимание вначале.

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

Я надеюсь, что эта помощь:

 <?php // The code below creates the class class Person { // Creating some properties (variables tied to an object) public $isAlive = true; public $firstname; public $lastname; public $age; // Assigning the values public function __construct($firstname, $lastname, $age) { $this->firstname = $firstname; $this->lastname = $lastname; $this->age = $age; } // Creating a method (function tied to an object) public function greet() { return "Hello, my name is " . $this->firstname . " " . $this->lastname . ". Nice to meet you! :-)"; } } // Creating a new person called "boring 12345", who is 12345 years old ;-) $me = new Person('boring', '12345', 12345); // Printing out, what the greet method returns echo $me->greet(); ?> 

Для получения дополнительной информации вам нужно перейти на codecademy.com

 class Person{ private $fname; private $lname; public function __construct($fname,$lname){ $this->fname = $fname; $this->lname = $lname; } } $objPerson1 = new Person('john','smith'); 

Метод __construct предназначен для передачи в параметрах при первом создании объекта, что является общей задачей. Если вы не хотите передавать какие-либо параметры во время создания, вам это не нужно.

Так:

 // Create a new class, and include a __construct method class Task { public $title; public $description; public function __construct($title, $description){ $this->title = $title; $this->description = $description; } } // Create a new object, passing in a $title and $description $task = new Task('Learn OOP','This is a description'); // Try it and see var_dump($task->title, $task->description); 

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

  class Test { function __construct($value1,$value2) { echo "Inside Construct"; echo $this->value1; echo $this->value2; } } // $testObject = new Test('abc','123'); 

Я считаю, что функция __construct () {...} – это часть кода, которую можно повторно использовать снова и снова в подстановке для TheActualFunctionName () {...} . Если вы измените имя CLASS, вам не нужно изменять код, потому что общий __construct всегда ссылается на фактическое имя класса … что бы это ни было. Вы меньше кода … или?

__construct – это метод инициализации нового объекта до его использования.
http://php.net/manual/en/language.oop5.decon.php#object.construct

Примечание. Родительские конструкторы не называются неявно, если дочерний класс определяет конструктор. Чтобы запустить родительский конструктор, требуется вызов parent::__construct() в дочернем конструкторе. Если дочерний элемент не определяет конструктор, он может быть унаследован от родительского класса, как метод нормального класса (если он не был объявлен как закрытый).