PHP OOP:迭代从类创建的所有对象

时间:2011-11-27 13:48:09

标签: php oop

我想从所有Gender对象创建一个<select>字段。有没有办法迭代从性别

类创建的所有对象
class Gender {

    public static $counter = 0;
    public $id;
    public $gender;

    public function __construct($gender){
        Gender::$counter++;
        $this->id = Gender::$counter;
        $this->gender = $gender;
    }

}

// Objects
$gender_male = new Gender('Male');
$gender_female = new Gender('Female');

6 个答案:

答案 0 :(得分:2)

  

有没有办法迭代从Gender类创建的所有对象?

在某种程度上,是的,但这是一个非常糟糕的设计明智的想法。

为什么不将要查询的所有相关对象放入数组中?

$genders = array();
$genders["male"] = new Gender('Male');
$genders["female"] = new Gender('Female');

然后您可以使用

遍历每个元素
foreach ($genders as $gender)
 echo $gender->id;

答案 1 :(得分:0)

你可以这样做。

class Gender {

    public static $genders = array();
    public $gender;

    public function __construct($gender){
        $this->gender = $gender;
        self::genders[] = $this;
    }

}

// Objects
$gender_male = new Gender('Male');
$gender_female = new Gender('Female');

foreach(Gender::genders as $gender) {
   ...
}

答案 2 :(得分:0)

class Gender {

    public static $counter = 0;
    public $id;
    public $gender;
    private static $instances = array();

    public function __construct($gender){
    Gender::$counter++;
    $this->id = Gender::$counter;
    $this->gender = $gender;
    self::$instances[] = $this;
    }

    public static function getInstances(){
    return self::$instances;
    }


}

new Gender( "male" );
new Gender( "male" );

foreach( Gender::getInstances() as $genderInstance ) {
echo $genderInstance->gender;
}

答案 3 :(得分:0)

这是我的解决方案:

$_genders = array('Male','Female','Alien');
$gender = array();
foreach($_genders as $g)
{
   $gender[$g] = new Gender($g);
}

答案 4 :(得分:0)

也许容器类适合这项任务。

请查看:SplObjectStorage

答案 5 :(得分:0)

我现在明白使用课程是一种极端的矫枉过正,但为了知道它是如何完成的,这里是新代码(基于你的所有评论):

class Gender {

    public static $counter = 0;
    public static $genders = array();

    public function __construct($gender){
        // Here it is
        Gender::$genders[++Gender::$counter] = $gender;
    }

}

// Objects
$gender_male = new Gender('Male');
$gender_female = new Gender('Female');

这是以自己的方式取得的团队成就,但我想我会转而使用数组。 : - )