Intereting Posts

создание экземпляра класса без присвоения переменной

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

require('class.Monkeys.php'); new Monkeys(); //note I didn't assign it to a variable 

Да, это совершенно верно. Однако это, возможно, плохая форма, потому что золотое правило таково:

Конструкторы не должны выполнять фактическую работу.

Конструктор должен создать объект так, чтобы он был действительным и в «состоянии готовности». Конструктор не должен самостоятельно начинать работу. Таким образом, это было бы разумнее:

 $monkeys = new Monkeys; $monkeys->goWild(); 

Или, если вы предпочитаете и используете достаточно продвинутую версию PHP:

 (new Monkeys)->goWild(); 

Хорошо, позвольте сказать, что у нас есть имя класса под названием Monkeys .

Файл class.Monkeys.php

 class Monkeys { function __construct() { $this->doSomething() } public function doSomething(){ echo "new Monkeys()->doSomething() was called"; } public function anotherMethod(){ echo "new Monkeys()->anotherMethod() was called"; } } 

Теперь вы можете создать экземпляр класса во время выполнения, не сохраняя его в переменной.

 require('class.Monkeys.php'); // you can just instantiate it and the constructur will be called automatically (new Monkeys()); // or you can instantiate it and call other methods (new Monkeys())->anotherMethod(); 

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