2012-04-12 2 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

ответ

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

Смежные вопросы