2011-12-15 69 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'; 
});