2011-12-15 1 views
7

ハードワイヤード名を使用せずにクラスをPHPにロードする方法を探しています。文字列からPHPクラスをロードする

スクリプトは、 'components'(クラス)という名前のテキストファイルを読み込み、ファイル内の名前でロードします。たとえば、次のように

<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

を使用しないで[するpreg_match()を](HTTP ://us2.php.net/manual/en/function.preg-match.php)。 コメントこのトピックについて詳述したい場合は、 –

+0

PHPは素晴らしい方法です。それは名前とタイプについて非常に柔軟です。 –

0

これにReflectionClassを使用します。

require_once $class . ".class.php"; 

$refl = new \ReflectionClass($class); 

$params_for_construct = array($param1, param2); 

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

理由だけではなく、あなたがXMLからクラス名をプルする必要がしている場合、あなたは、単にシンプルな呼び出しなどとしてそれを行うことができ、また、オートローダ

spl_autoload_register(function ($class) { 
    require 'class_folder/' . $class . '.class.php'; 
}); 
関連する問題