[英]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.