我想从所有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');
答案 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');
这是以自己的方式取得的团队成就,但我想我会转而使用数组。 : - )