phpclassnamespacesphp-7anonymous-class

Anonymous class construction


I need an idea to create anonymous class on PHP. I don't know how I can works.

See my limitations:

What I need, and why:

Well, I need create a function called ie create_class() that receives a key name and a anonymous class. It'll be useful for me because I want use different name class symbols that PHP can't accept. For instance:

<?php

  create_class('it.is.an.example', function() {
    return class { ... }
  });

  $obj = create_object('it.is.an.example');

?>

So, I need an idea that accept this use. I need it because on my framework I have this path: /modules/site/_login/models/path/to/model.php. So, the model.php need to declare a new class called site.login/path.to.model.

On call create_object() if the internal cache have a $class definition (like it.is.an.example it simply return the new class object. If not, need load. So I will use the $class content to search fastly what is the class file.


Solution

  • In PHP 7.0 there will be anonymous classes. I don't fully understand your question, but your create_class() function might look like this:

    function create_class(string $key, array &$repository) {
        $obj = new class($key) {
            private $key;
            function __construct($key) {
                $this->key = $key;
            }
        };
        $repository[$key] = $obj;
        return $obj;
    }
    

    This will instantiate an object with an anonymous class type and register it into the $repository. To get an object out you use the key you created it with: $repository['it.is.an.example'].