簡體   English   中英

PHP:如何創建對象變量?

[英]PHP: How to Create Object Variables?

所以例如我有這個代碼:

class Object{
    public $tedi;
    public $bear;
    ...some other code ...
}

現在您可以看到此類中有公共變量。 我想做的是以動態方式制作這些變量,其功能如下:

private function create_object_vars(){

   // The Array what contains the variables
   $vars = array("tedi", "bear");

   foreach($vars as $var){
      // Push the variables to the Object as Public
      public $this->$var;
   }
}

那么我應該如何以動態方式創建公共變量呢?

$vars = (object)array("tedi"=>"bear");

要么

$vars = new StdClass();
$vars->tedi = "bear";

是的,你可以這樣做。

你是非常正確的 - 這應該這樣做:

private function create_object_vars(){

   // The Array of names of variables we want to create
   $vars = array("tedi", "bear");

   foreach($vars as $var){
      // Push the variables to the Object as Public
      $this->$var = "value to store";
   }
}

請注意,這使用變量命名變量 ,這可以做一些瘋狂和危險的事情!

根據評論,像這樣創建的成員將是公共的 - 我確信有一種創建受保護/私有變量的方法,但它可能並不簡單(例如,您可以通過擴展中的C Zend API來實現)。

或者,您也可以從ArrayObject派生對象。 因此它繼承了數組行為和一些使注入屬性更容易的方法。

class YourObject extends ArrayObject {

    function __construct() {
        parent::__construct(array(), ArrayObject::PROPS_AS_ARRAY);
    }

    function create_object_vars() {
        foreach ($vars as $var) {

            $this[$var] = "some value";

        }
    }

然后,屬性將以$this->var$this["var"] ,這可能與否適用於用例。 設置屬性的另一種方法是$this->offsetSet("VAR", "some value");

順便說一句,變量變量沒什么壞處。 它們是一種適當的語言構造,就像重用ArrayObject一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM