【问题标题】:how to create dynamic object variable如何创建动态对象变量
【发布时间】:2012-05-18 07:48:16
【问题描述】:

是否有一些解决方案可以为 20 种不同的情况编写 switch 代码块。 编写类似于动态变量的对象类型的代码。 对象的名称

会根据为论坛选择的值为value = "option1" , value = "option2"进行自我调整,所以我会写这样的东西。

$object = $_POST['option_name'];

据我所知,我可以 创建适合他的班级的新对象女巫。 在不知道他的名字的情况下,我可以简单地调用他的方法来查看他的计算结果$object->calculated () //according it is match class 然后代码也将根据下一个代码适合他的表名数据库。 $object->create_record_for_database (); //because each class has a separate table name inside.我希望我足够清楚谢谢

示例代码:

<?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
}


       }
?>

【问题讨论】:

    标签: php oop variables object


    【解决方案1】:

    如果要从名称存储在字符串中的类创建新对象,可以使用:

    $object = new $className();
    

    或者在你的情况下:

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

    但是,我个人不喜欢这样使用变量的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 2011-03-25
      • 1970-01-01
      相关资源
      最近更新 更多