1

想知道我是否可以通过将 PHP 类声明为变量来动态创建它。

IE

class $vaiable {

  public $foo2,
         $foo3,
         $foo4;


  function __construct(array $data = null) {
    if( empty($data) ) 
      return;

    foreach( $data as $field => $value ) {
      $this->$field = $value;
    }
  }

}
4

2 回答 2

3

这是我曾经使用过并允许其他人使用eval()的唯一一件事,前提是对可变内容进行严格控制,即没有任意用户输入,最好对照白名单进行检查,等等。

例如:

<?php
    eval('class '.$variable.' {
        public $foo;
        private $bar;

        // ...etc
    }');
?>
于 2013-05-08T22:29:11.593 回答
-1

您是否要创建一个类的新实例,而类名不是立即知道的?如果是这样,这在 PHP 中是有效的:

class SomeClass
{
    public function printSomething()
    {
        echo "You did it!";
    }
}

$className = "SomeClass";

$instance = new $className();

$instance->printSomething();
于 2013-05-08T22:29:00.350 回答