Конструктор класса определяет, что происходит, когда вы создать экземпляр объекта из этого класса. Деструктор класса определяет, что происходит, когда вы уничтожаете экземпляр объекта.
Смотрите PHP Manual on Constructors and Destructors:
PHP 5 позволяет разработчикам объявлять методы-конструкторы для классов. Классы, которые имеют метод конструктора, вызывают этот метод для каждого вновь созданного объекта, поэтому он подходит для любой инициализации, которая может понадобиться объекту до его использования.
и
РНР 5 вводит концепцию деструкторов, аналогичную других объектно-ориентированных языков, таких как C++. Метод деструктора будет вызываться, как только будут удалены все ссылки на конкретный объект или когда объект будет явно уничтожен или в любом порядке в последовательности выключения.
На практике вы используете конструктор для помещения объекта в минимально допустимое состояние. Это означает, что вы назначаете аргументы, переданные конструктору свойствам объекта. Если ваш объект использует какие-то типы данных, которые нельзя назначить напрямую как свойство, вы создаете их здесь, например.
class Example
{
private $database;
private $storage;
public function __construct($database)
{
$this->database = $database;
$this->storage = new SplObjectStorage;
}
}
Обратите внимание, что для того, чтобы сохранить свои объекты проверяемых, a constructor should not do any real work:
Работа в конструкторе, такие как: создание/инициализации коллаборационистов, общаясь с другими службами, и логика создать свое собственное государство удаляет швы, необходимые для тестирования, заставляя подклассы/матки унаследовать нежелательное поведение. Слишком много работы в конструкторе предотвращает создание экземпляров или изменение соавторов в тесте.
В приведенном выше Example
$database
является сотрудником. У этого есть жизненный цикл и цель его собственного и может быть общим экземпляром. Вы бы не создали это внутри конструктора. С другой стороны, SplObjectStorage
является неотъемлемой частью Example
. Он имеет тот же жизненный цикл и не используется совместно с другими объектами. Таким образом, это нормально для new
это в ctor.
Аналогичным образом вы используете деструктор для очистки после вашего объекта. В большинстве случаев это не требуется, поскольку PHP обрабатывается автоматически. Вот почему вы увидите гораздо больше, чем dtors в дикой природе.
Пример eac действительно хорош, теперь я немного понимаю, почему люди ищут конструктор и дескриптор, но скажите мне, если я не использую конструктор, я ничего не теряю ... bcoz в программе мы используем много функций, varaibles и т. д. для функций и variabl, как я могу использовать construc, есть ли там динамическое назначение, означает, что мы должны вызывать все имя функции внутри конструктора, – Bharanikumar
Какова возможная причина не принимать ... ответ .... я нашел там ответ, отвечающий на вопрос –