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






Это еще один способ объявить конструктор. Вы также можете использовать имя класса, например:
class Cat
{
function Cat()
{
echo 'meow';
}
}
а также
class Cat
{
function __construct()
{
echo 'meow';
}
}
Эквивалентны. Они вызываются всякий раз, когда создается новый экземпляр класса, в этом случае они будут вызываться с этой строкой:
$cat = new Cat();
Да, этот плохой пример кода внутри самого конструктора.
почему нет необходимости добавлять public перед определением функции __construct?
__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 не поддерживает перегрузку конструктора (то есть наличие нескольких конструкторов, принимающих разные параметры). Добиться этого эффекта можно с помощью статических методов.
Примечание: Я извлек это из журнала (на момент написания) принятого ответа.
Я считаю, что функция __construct () {...} - это фрагмент кода, который можно повторно использовать снова и снова вместо TheActualFunctionName () {...}.
Если вы измените имя КЛАССА, вам не нужно менять его в коде, потому что общая конструкция __construct всегда ссылается на фактическое имя класса ... каким бы оно ни было.
Вы меньше кодите ... или?
Думаю, это важно для понимания назначения конструктора. Даже после прочтения ответов мне потребовалось несколько минут, чтобы понять, и вот почему. Я приобрел привычку явно кодировать все, что инициируется или происходит. Другими словами, это будет мой класс кошек, и как я бы его назвал.
class_cat.php
class cat {
function speak() {
return "meow";
}
}
somepage.php
include('class_cat.php');
mycat = new cat;
$speak = cat->speak();
echo $speak;
Где в приведенных примерах @Logan Serman «class cat» предполагается, что каждый раз, когда вы создаете новый объект класса «cat», вы хотите, чтобы кошка «мяукала», а не ждала, пока вы вызовете функцию, чтобы заставить ее мяукать.
Таким образом, мой разум явно думал о том, где метод конструктора использует имплицитность, и это сначала затрудняло понимание.
Если у вас есть права «редактировать», используйте их с умом ... каждый ответ имеет некоторую ценность, может быть, не для вас, а для других, не спешите отклонять свой ответ только потому, что «вы» не находите его полезным . Я нахожу это объяснение очень полезным для описания имплицитности метода конструктора.
class Person{
private $fname;
private $lname;
public function __construct($fname,$lname){
$this->fname = $fname;
$this->lname = $lname;
}
}
$objPerson1 = new Person('john','smith');
Это не объясняет, это просто код. Пожалуйста, добавьте текст, объясняющий, что происходит в соответствии с вопросом.
Конструктор - это метод, который автоматически вызывается при создании экземпляра класса. Это означает, что содержимое конструктора обрабатывается без отдельных вызовов методов. Содержимое скобок с ключевым словом class передается в метод конструктора.
__construct - это метод инициализации нового объекта перед его использованием. http://php.net/manual/en/language.oop5.decon.php#object.construct
Примечание. Родительские конструкторы не вызываются неявно, если дочерний класс определяет конструктор. Для запуска родительского конструктора требуется вызов parent::__construct() внутри дочернего конструктора. Если дочерний элемент не определяет конструктор, он может быть унаследован от родительского класса так же, как метод обычного класса (если он не был объявлен как частный).
Надеюсь на эту помощь:
<?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
Метод __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 просто инициирует класс. Предположим, у вас есть следующий код;
Class Person {
function __construct() {
echo 'Hello';
}
}
$person = new Person();
//the result 'Hello' will be shown.
Мы не создали еще одну функцию, чтобы повторить слово «Hello». Он просто показывает, что ключевое слово __construct весьма полезно при запуске класса или объекта.
Конструктор позволяет вам инициализировать свойства объекта при создании объекта.
Если вы создаете функцию __construct (), PHP будет автоматически вызывать эту функцию, когда вы создаете объект из класса.
Cat()и__cosntruct()делают то же самое в этом контексте, но вы должны быть осторожны: если классCatнаходится в пространстве имен,Cat()не будет рассматриваться как конструктор, начиная с PHP 5.3.3. php.net/manual/en/language.oop5.decon.php