2012-05-09 2 views
0

대신 20 가지 경우에 대해 스위치 코드 블록을 작성하는 몇 가지 해결책이 있습니까? 동적 변수가 될 객체의 유형과 같은 코드를 작성하십시오. 개체의 이름동적 객체 변수를 만드는 방법

포럼에 대해 선택한 값에 따라 value = "option1" , value = "option2"으로 조정되므로 잘 쓰겠습니다.

$object = $_POST['option_name']; 

내가 자신의 클래스에 적합한 새로운 객체 마녀를 만들 수에 따라. 그리고 그의 이름이 무엇인지 알지 못해서 나는 그가 계산 한 것을보기 위해 자신의 메서드를 호출 할 수 있습니다. $object->calculated() //according it is match class 그리고 나서 코드는 다음 코드에 따라 테이블 이름 데이터베이스에도 적합합니다. 당신은 이름이 문자열에 저장되어있는 클래스에서 새 개체를 만들려면

<?php 
require_once("/includes/database.php"); 
require_once("/includes/some_class.php"); 
?> 

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
<br>value1<input type=text name='value1'> 
<br>value2<input type=text name='value2'> 
<h2>please select one of the choice</h2> 
<input type="radio" name="option_name" value="option1" /> "option1" 
<br><input type="radio" name="option_name" value=""option2" /> option2 
<br><input type="radio" name="option_name" value="option3" /> option3 
* 
* 
* 
<br><input type="radio" name="option_name" value="option20" /> option20 
<br><input type="submit" name="submit" value="Submit Form"><br> 
</form> 

<br/><br/> 

<?php 
$object=""; 
echo("<br>"); 
     if (isset($_POST['submit'])) { 
       if (!empty($_POST['option_name'])) { 
        ClassOption::$option_name = $_POST['option_name'];//can be from option1,option2...option20 
        ClassOption::$value1 = $_POST['value1']; 
        ClassOption::$value2 = $_POST['value2']; 

     $option = $_POST['option_name']; 
     switch ($option) 
{ 
case option1: 
    $option1 = new Option1 ();// create object1 and calculate it 
    echo 'object1 calculated', $option1->calculated(), "<br />"; 
    $option1->create_record_for_database();//with value1,value2,option_name 
    break; 
case option2: 
    $option2 = new Option2();// create object2 and calculate it 
    echo 'object2 calculated', $option2->calculated(), "<br />"; 
    $option20->create_record_for_database();//with value1,value2,option_name 
    break; 
    * 
    * 
    * 
    case option20: 
    $option2 = new Option2(); 
    echo 'object2 calculated', $option2->calculated(), "<br />"; 
    $option20->create_record_for_database();//with value1,value2,option_name 
} 


     } 
?> 

답변

1

, 당신은 사용할 수 있습니다 : $object->create_record_for_database(); //because each class has a separate table name inside. 나는

이 예제 코드는 내가 충분히 명확한 감사

을 해요 희망

$option = new $_POST['option_name'](); 
$option->calculated(); 
$option->create_record_for_database(); 

Howeve :

$object = new $className(); 

또는 귀하의 경우 r, 나는 개인적으로 이와 같은 변수를 사용하는 것을 좋아하지 않는다.

관련 문제