Middle
Why were anonymous classes invented?
sobes.tech AI
Answer from AI
Anonymous classes allow creating a simple, one-time object of a class for use in a specific place without explicitly defining the class. This is useful in the following cases:
- Implementing interfaces or extending classes on the fly: Often, there is a need to create an object that simply implements an interface method or inherits functionality from a base class for one-time use.
// Instead of // class MyListener implements EventListener { public function handle(Event $event) { /* ... */ } } // $emitter->on('event', new MyListener()); // You can $emitter->on('event', new class implements EventListener { public function handle(Event $event) { // Event handling logic echo "Event processed!\n"; } }); - Reducing code size: Eliminates the need to create a separate file for a small class used only in one place.
- Use in callbacks and closures: Convenient for passing an object with specific methods as a callback.
function processData(array $data, object $processor) { foreach ($data as $item) { $processor->process($item); } } processData([1, 2, 3], new class { public function process($item) { echo "Processing item: " . $item . "\n"; } }); - Testing: For creating mocks or stubs without defining full classes.
- Encapsulation: Allows combining data and behavior specific to a particular task without polluting the global namespace.
They are syntactic sugar to simplify code where a full class definition would be excessive.