Course Content
Autoloading
0/1
Exceptions Handling
0/1
PHP OOP
About Lesson

What are Anonymous classes:

They allow you to create classes on the fly without explicitly defining a named class. Anonymous classes are useful for situations where you need a simple, one-off class implementation without the need to define a separate class in your code.

Syntax:

Anonymous classes are declared using the new class syntax followed by an optional list of implemented interfaces in parentheses and a code block containing the class definition.

PHP
<?php

$obj = new class {

    public function greet() {

        echo "Hello from an anonymous class!";

    }

};

Instantiation:

You instantiate an anonymous class immediately after its declaration using the new keyword, as shown in the syntax example above.

Accessing Methods:

You access methods of an anonymous class just like methods of any other class, using the object operator ->.

PHP
<?php

$obj->greet(); // Output: Hello from an anonymous class!

Use Cases:

Callbacks and event handling: Anonymous classes are useful for providing callbacks or event handlers when you need a small class to handle a specific task.

Instantiating objects without defining separate classes: If you need a simple object with a few methods that are used only in one place, anonymous classes can be convenient.

Example:

Here’s an example demonstrating the usage of anonymous classes:

PHP
<?php

$logger = new class {

    public function log($message) {

        echo "Logging: $message";

    }

};

$logger->log("Hello, world!"); // Output: Logging: Hello, world!

?>

In this example, we create an anonymous class with a log() method that simply echoes a message. We then instantiate the class and call its log() method.

Anonymous classes are useful when you need a quick and simple class definition for a specific task without cluttering your codebase with unnecessary class definitions. However, they should be used judiciously, as they may reduce code readability and maintainability if overused or misused.