Для чего используется функция __construct?
Я много замечаю __construct
с классами. Я немного читал и занимался серфингом в Интернете, но я не мог найти объяснения, которые я мог понять. Я только начинаю с ООП.
Мне было интересно, может ли кто-нибудь дать мне общее представление о том, что это такое, а затем простой пример того, как он используется с PHP?
Ответы
Ответ 1
__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: нажмите здесь
Ответ 2
__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 не поддерживает перегрузку конструктора (то есть наличия нескольких конструкторов, которые принимают разные параметры). Вы можете добиться этого эффекта, используя статические методы.
Примечание: я получил это из журнала принятого ответа (в момент написания).
Ответ 3
Другой способ объявить конструктор. Вы также можете использовать имя класса, например:
class Cat
{
function Cat()
{
echo 'meow';
}
}
и
class Cat
{
function __construct()
{
echo 'meow';
}
}
Являются эквивалентными. Они вызывается всякий раз, когда создается новый экземпляр класса, в этом случае они будут вызываться с помощью этой строки:
$cat = new Cat();
Ответ 4
Я думаю, что это важно для понимания цели конструктора.
Даже после прочтения ответов мне потребовалось несколько минут, чтобы понять, и в этом причина.
У меня появилась привычка явно кодировать все, что инициируется или происходит. Другими словами, это был бы урок моей кошки и как бы я это назвал.
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", вы хотите, чтобы cat "мяукал", а не ждал, когда вы вызовете функцию, чтобы сделать ее мяу.
Таким образом, мой ум явно думал, где метод конструктора использует простоту, и это поначалу затрудняло понимание.
Ответ 5
Конструктор - это метод, который автоматически вызывается при создании экземпляра класса. Это означает, что содержимое конструктора обрабатывается без отдельных вызовов метода. Содержимое скобки ключевого слова класса передается методу конструктора.
Ответ 6
Надеюсь, что эта помощь:
<?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
Ответ 7
Метод __construct
используется для передачи параметров при первом создании объекта - это называется "определение метода конструктора" и является обычной практикой.
Однако конструкторы являются необязательными --so, если вы не хотите передавать какие-либо параметры во время создания объекта, вам это не нужно.
Так:
// 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);
Для получения более подробной информации о том, что такое конструктор, смотрите руководство.
Ответ 8
class Person{
private $fname;
private $lname;
public function __construct($fname,$lname){
$this->fname = $fname;
$this->lname = $lname;
}
}
$objPerson1 = new Person('john','smith');
Ответ 9
Конструкция __ всегда вызывается при создании новых объектов или их вызывается при инициализации. Это подходит для любой инициализации, которая может понадобиться объекту до его использования. Метод __construct - это первый метод, выполняемый в классе.
class Test
{
function __construct($value1,$value2)
{
echo "Inside Construct";
echo $this->value1;
echo $this->value2;
}
}
//
$testObject = new Test('abc','123');
Ответ 10
Я считаю, что функция __construct () {...}
- это часть кода, которую можно снова и снова использовать в подстановке для TheActualFunctionName () {...}
.
Если вы измените имя CLASS, вам не нужно изменять код, потому что общий __construct всегда ссылается на фактическое имя класса... что бы это ни было.
Вы кодируете меньше... или?
Ответ 11
__ construct - это метод инициализации нового объекта до его использования.
http://php.net/manual/en/language.oop5.decon.php#object.construct
Ответ 12
Примечание. Родительские конструкторы не называются неявно, если дочерний класс определяет конструктор. Для запуска родительского конструктора требуется вызов parent::__construct()
внутри дочернего конструктора. Если дочерний элемент не определяет конструктор, он может быть унаследован от родительского класса, как метод нормального класса (если он не был объявлен как закрытый).
Ответ 13
__construct просто инициирует класс. Предположим, у вас есть следующий код;
Class Person {
function __construct() {
echo 'Hello';
}
}
$person = new Person();
//the result 'Hello' will be shown.
Мы не создали другую функцию, которая повторяла бы слово "Hello". Это просто показывает, что ключевое слово __construct весьма полезно для инициации класса или объекта.