2012-04-12 62 views
2

我有一个字符串,我试图用来创建一个类。我试图命名每个属性并根据字符串的内容定义它的值。例如:PHP-如何从字符串内容分配类变量和值?

$mystring = "first_name=jane,last_name=doe"; 

$pieces = explode(",", $mystring); 

foreach($pieces as $key => $value){ 
    $eachvalue = explode("=",$value); 

    class MyClass { 

     public $eachvalue['0'] = $eachvalue['1']; 

    } 

} // end foreach 

$obj = new MyClass; 

echo $obj->first_name; // Should echo "Jane" 

我很新的PHP类,这是行不通的。我不知道我是否接近,或者如果我走了......?

+0

http://stackoverflow.com/questions/1203625/dynamically-generate-classes-at-runtime-in-php – NAVEED 2012-04-12 16:43:18

回答

5

正确的方法是:

// Class definition 
class MyClass { 

    public $first_name; 
    public $last_name; 

} 

$mystring = "first_name=jane,last_name=doe"; 

// Instantiate the class 
$obj = new MyClass; 

// Assign values to the object properties 
$pieces = explode(",", $mystring); 
foreach ($pieces as $key => $value) { 
    // this allows you to assign the properties dynamically 
    list($name, $val) = explode("=", $value); 
    $obj->$name = $val; 
} // end foreach 

echo $obj->first_name; // Should echo "Jane" 

一个类只能被定义一次 - 通过将其在循环中,你是在循环的每次迭代宣布它。另外,一个类不会在对象的实例中保存所需的值,它是描述对象将如何的骨架。所以你要做的是定义这个类,实例化它,然后给它赋值。

+0

这很好。谢谢!我可以理解这个例子的工作原理。再次感谢。 – JROB 2012-04-12 16:48:19