2011-12-15 70 views
7

我正在寻找一种将类加载到PHP中而不使用硬连接名称的方法。从字符串中加载PHP类

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

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

当PHP运行时,它需要做这样的事情:

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

回答

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”到屏幕上,您的动态包含类属性的内容。

+0

另外,如果你需要拉从XML类的名称,你可以做的尽可能简单地调用一个简单的[的preg_match()](HTTP ://us2.php.net/manual/en/function.preg-match.php)。 如果您想详细说明该主题,请留言。 – 2011-12-15 06:56:41

0

为此使用ReflectionClass。

require_once $class . ".class.php"; 

$refl = new \ReflectionClass($class); 

$params_for_construct = array($param1, param2); 

$instance = $refl->newInstanceArgs($params_for_construct); 
0

为什么不使用自动加载

spl_autoload_register(function ($class) { 
    require 'class_folder/' . $class . '.class.php'; 
});