【问题标题】:PHP OOP find object by attributePHP OOP 按属性查找对象
【发布时间】:2014-03-07 20:53:35
【问题描述】:

我正在尝试通过生成随机数并根据该数字检查对象 ID 来提取类(对象)的随机实例。

我找到了很多关于如何检索对象属性(特别是这里是 id)的信息,但不是不知道首先是哪个对象。

所以在我的课堂上我有

public function getID() {
return $this->id;
}

但是

getID()

只有当我使用它时才有效

$object->getID()

有没有办法对类中的每个对象做类似的事情,而不指定对象?

我试图避免为类中的每个对象编写 if/then。

【问题讨论】:

  • "object in a class" 你的意思是你在一个类中嵌入了其他对象,例如$foo->bar->baz() 其中 bar 是与 foo 是其实例的类不同的某个 OTHER 对象?
  • 这里的技术术语有点混乱。没有“类中的对象”之类的东西。类是创建对象的蓝图。其次,对象不包含对象。一个对象可以包含一个可以包含对象的数组(一个对象可以包含一个对象,作为一个属性)。如果您的目标是一个类的方法(函数),那么您必须提供一个对象。此对象可以是匿名命名的,这意味着$object->getID()$item->getID() 可以包含完全相同的对象。
  • Marc B 和 dbf 感谢 cmets,看来我的措辞使问题复杂化了。这些对象只是一个类的实例。

标签: php function class oop object


【解决方案1】:

您可以设置一个对象数组,然后遍历该数组并在每个对象上调用 getID() 方法。如果你的对象数组被称为 $myObjects...

foreach($myObjects as $object) {
    $object->getID();  //And do something with it
}

但是,如果您想从一组对象中随机挑选一个对象,那么测试一大堆以查看它们是否是您挑选的对象并不是很理想。您最好将它们放入一个数组并使用array_rand() 从数组中选择一个随机对象。

您这样做的目的是什么?这可能表明解决此问题的更好方法。

【讨论】:

  • 我认为 array_rand() 会起作用,并且是一个比我要解决的方法更简单的解决方案。感谢您的提示。
【解决方案2】:

我认为您必须为这种可能性做好计划,然后以@Surreal Dreams 的形式遍历候选对象;建议。

Get all instances of a class in PHP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多