Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

dynamic class names in php

Tags:

oop

php

wordpress

I have a base class called field and classes that extend this class such as text, select, radio, checkbox, date, time, number, etc.

Classes that extend field class are dynamically called in a directory recursively using include_once(). I do this so that I ( and others) can easily add a new field type only by adding a single file

What I want to know: Is there a way to substantiate a new object from one of these dynamically included extending classes from a variable name?

e.g. a class with the name checkbox :

$field_type = 'checkbox';  $field = new {$field_type}(); 

Maybe this would work? but it does not?

$field_type = 'checkbox';  $field = new $$field_type(); 
like image 312
andrew mclagan Avatar asked Aug 20 '11 10:08

andrew mclagan


1 Answers

This should work to instantiate a class with a string variable value:

$type = 'Checkbox';  $field = new $type(); echo get_class($field); // Output: Checkbox 

So your code should work I'd imagine. What is your question again?

If you want to make a class that includes all extended classes then that is not possible. That's not how classes work in PHP.

like image 112
sg3s Avatar answered Sep 25 '22 04:09

sg3s