我正在寻找一种在不使用硬连线名称的情况下将类加载到PHP中的方法。
这个想法是脚本将加载一个名为“components”(类)的文本文件,然后按文件中的名称加载它们。例如:
<xml><Classes><class name="myClass"/></Classes></xml>
运行PHP时,需要执行以下操作:
require_once {myClass}".class.php";
var myclass = new {myClass}();
答案 0 :(得分:5)
require_once $class . ".class.php";
$myclass = new $class;
请参阅http://www.php.net/manual/en/language.oop5.basic.php#language.oop5.basic.new。
答案 1 :(得分:3)
你的例子几乎是正确的。你可以用$ myClass替换{myClass},它应该可以工作。
以下是一个如何使用它的简单示例:
File: myClass.class.php
<?php
class myClass {
public $myVar = 'myText';
}
?>
File: test.php
<?php
$className = "myClass";
require_once $className . ".class.php";
$myInstance = new $className;
echo $myInstance->myVar;
?>
这应该将“myText”输出到屏幕,即动态包含的类属性的内容。
答案 2 :(得分:0)
使用ReflectionClass。
require_once $class . ".class.php";
$refl = new \ReflectionClass($class);
$params_for_construct = array($param1, param2);
$instance = $refl->newInstanceArgs($params_for_construct);
答案 3 :(得分:0)
为什么不使用自动加载器
spl_autoload_register(function ($class) {
require 'class_folder/' . $class . '.class.php';
});