Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
679 views
in Technique[技术] by (71.8m points)

oop - dynamic class names in php

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();
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...