从string加载PHP类

时间:2011-12-15 06:30:59

标签: php

我正在寻找一种在不使用硬连线名称的情况下将类加载到PHP中的方法。

这个想法是脚本将加载一个名为“components”(类)的文本文件,然后按文件中的名称加载它们。例如:

<xml><Classes><class name="myClass"/></Classes></xml>

运行PHP时,需要执行以下操作:

require_once {myClass}".class.php";
var myclass = new {myClass}();

4 个答案:

答案 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';
});