Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Anonymous class construction

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

See my limitations:

  • On PHP you can't make anonymous class, like anonymous function (like class {});
  • On PHP you don't have class scope (except in namespaces, but it have the same problem below);
  • On PHP you can't use variables to specify the class name (like class $name {});
  • I don't have access to install the runkit PECL.

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.

like image 560
David Rodrigues Avatar asked Mar 15 '12 19:03

David Rodrigues


1 Answers

If you really need to to that, you could use eval()

$code = "class {$className} { ... }";
eval($code);
$obj = new $className ();

But the gods won't approve this. You will go to hell if you do it.

like image 149
Edson Medina Avatar answered Oct 07 '22 18:10

Edson Medina