-2

我对此进行了研究,找不到我想要的东西。

class headerStyle{
 // now  creating our CONSTRUCTOR function
 function __construct($args=array()) {
     $this->fields = array('background','color','fontSize','backgroundUrl','imagePosition','Width','Height','backgroundSize','margin','padding','backgroundRepeat');
      foreach ($this->fields as $field) {
                $this->{"$field"} = $args["$field"];
                 }
         }
}


$style = new headerStyle(
       array(
         background =>"#DEDEDC",
         color=>"#F5F3F4",
         fontSize=>"24px",
         backgroundUrl=>"_images/bodyBg1.jpg",
         backgroundSize=>"50% 50%",
         padding=>"10px 0px 0px 0px",
         margin=>"0px 0px 0px 0px",
         width=>"100%",
         height=>"60px",
         imagePosition=>"top-left",
            )
);

我需要传递一个动态变量,而不是给出一个值,例如 background=>$_post['headerBg'];

4

2 回答 2

2

您快到了。PHP 中的 POST 数组可以使用$_POST['headerBg'];(注意它是大写的)来访问。

class headerStyle{
 // now  creating our CONSTRUCTOR function
 function __construct($args=array()) {
     $this->fields = array('background','color','fontSize','backgroundUrl','imagePosition','Width','Height','backgroundSize','margin','padding','backgroundRepeat');
      foreach ($this->fields as $field) {
                $this->{"$field"} = $args["$field"];
                 }
         }
}


$style = new headerStyle(
       array(
         background =>$_POST['headerBg'],
         color=>"#F5F3F4",
         fontSize=>"24px",
         backgroundUrl=>"_images/bodyBg1.jpg",
         backgroundSize=>"50% 50%",
         padding=>"10px 0px 0px 0px",
         margin=>"0px 0px 0px 0px",
         width=>"100%",
         height=>"60px",
         imagePosition=>"top-left",
            )
);
于 2012-11-27T10:15:55.490 回答
0

你的数组设置是错误的,它有数字键,你想要一个关联数组。定义默认值,然后使用array_merge()设置的任何元素覆盖默认值:

function __construct($args=array()) {
     $defaults = array('background' => '', 'color' => '', 'fontSize' => '', 'backgroundUrl' => '', 'imagePosition' => '', 'Width' => '', 'Height' => '', 'backgroundSize' => '', 'margin' => '', 'padding' => '', 'backgroundRepeat' => '');

     $this->fields = array_merge($defaults, $args);
}

可以通过对元素进行硬编码或从以下方式获取,就像您尝试的那样使用它$_POST

$style = new headerStyle(
   array(
     background =>'',
     color=>"#F5F3F4",
     fontSize=>"24px")
);
于 2012-11-27T10:23:27.583 回答