Хорошо, поэтому в книге сказано: «при создании нового объекта вы можете передать список аргументов вызываемому классу. Они передаются в специальный метод внутри класса, называемый конструктором, который инициализирует различные свойства.
Я не знаю, что такое "передача", на самом деле, особенно не в этом контексте. Я также читал, что если вы используете метод конструктора, он принимает имя класса. Итак, если у вас есть
class User
{
function __constructor($param1, $param2)
{
echo "User construct."
}
}
user();
Что должно произойти? Я не могу сказать, потому что мои пастбины говорят, что это «возможная атака CRF», что бы это ни значило ...
Двигаясь прямо, мы приходимк следующему разделу книги, где код говорит:
$bothCatsObject = new tiger();
echo "Tigers have...<br>";
echo "Fur: " . $bothCatObject->fur . "<br />";
echo "Stripes: " . $bothCatObject->stripes;
class cat
{
public $fur; // Cats have fur.
function __construct()
{
$this->fur = "TRUE";
}
}
class tiger extends Cats
{
public $stripes; // Tigers have stripes.
function __construct()
{
parent::__construct(); // Call parent construct first.
$this->stripes = "True";
}
}
Это точка второго блока кода, показывающая, что при вызове объекта его конструкции активируют и устанавливают свойства в активной памяти или что-то в этом родеИли, может быть, это означает, что когда вызывается свойство, если свойство, его значение устанавливается в конструкторе, оно будет иметь значение. Если его значение не установлено в конструкцииctor (например, если он установлен внутри неконструктивного метода), будет возвращена ошибка?
В книге говорится, что «этот код использует преимущества наследования конструктора обычным способом».Итак, я надеюсь, что я не слишком далеко.Мне интересно, почему конструкторы полезны.В каких приложениях нужны конструкторы, если мне нужно знать, что на данном этапе моего исследования?
Наконец, в этом случае классу "cats" никогда не назначается объект.Поскольку «тигр» расширяет класс кошек, можно ли вызывать класс кошек через объект тигра?Вот пример того, что я имею в виду:
$bothCatsObject = new tiger();
$bothCatsObject->catTest(); //Does this return an error?
class cat
{
public $fur; // Cats have fur.
function __construct()
{
$this->fur = "TRUE";
}
function catTest()
{
echo "The object works for cats and tigers."
}
}
class tiger extends Cats
{
public $stripes; // Tigers have stripes.
function __construct()
{
parent::__construct(); // Call parent construct first.
$this->stripes = "True";
}
function tigerTest()
{
echo "The object works for tigers and cats."
}
}
В этих же строках могу ли я вызвать функции, встроенные в класс "тигра", из нового объекта cat, потому что класс тигра находится в одном роде с классом cat?Другими словами, сработает ли замена строк 1 и 2 предыдущего блока кода на этот код или будет выдано сообщение об ошибке:
<pre>
$bothCatsObject = new cat();
$bothCatsObject->tigerTest(); //Does this return an error?