PHP对象问题

PHP对象问题,php,oop,Php,Oop,在PHP中为本例使用一组非常简单的对象 让我们说: ObjectA: 属性:DescId 方法:getListofData() ObjectB: 属性:DescId;名称 方法:getDescNameById() 我想知道的是,当ObjectA是从循环中调用函数的对象时,从ObjectB获取DescName的最佳方法是什么 我认为我需要实例化ObjectB(作为新的),然后将ObjectA.DescId传递到ObjectB.getDescNameById方法中 例如: class objectA

在PHP中为本例使用一组非常简单的对象

让我们说:

ObjectA:

属性:DescId

方法:getListofData()

ObjectB:

属性:DescId;名称

方法:getDescNameById()

我想知道的是,当ObjectA是从循环中调用函数的对象时,从ObjectB获取DescName的最佳方法是什么

我认为我需要实例化ObjectB(作为新的),然后将ObjectA.DescId传递到ObjectB.getDescNameById方法中

例如:

class objectA {

      function getListOfData(){
            $myObjB= new objectB();
                while ... 
                {
                    $myObjB->descId = $row["descId"];
                    $myDescName = $myObjB->getDescNameById();
                     ...
                     $i++;
                }
      }
}

我很确定上述方法会奏效,但我不确定这是不是正确的方法,或者是否有其他方法可以做到这一点。这种东西有名字吗?有人提到延迟加载。这就是PHP中的内容吗?

请记住,您的问题需要一些扩展

课堂就是一个食谱。对象是用该配方制作的实际菜肴

所以,如果你想知道菜谱的味道,你需要做点什么

在设计时,您通常会考虑类。也就是说,当你计划一顿晚餐时,你考虑的是你想要提供什么,是食谱,而不是成品。(在烹饪之前,你不会有这些菜。)也就是说,你可能会考虑到一些食谱很难执行,因此提供这些菜是一个危险的提议

这有意义吗

关于设计,您需要问自己一些问题:

您是否需要ObjectA,因为它们都存储同名的id?(大概他们是绑在一起的。)

这两者有什么区别

这可以组合成一个对象吗


这取决于这些方法的作用以及id的实际内容。

请记住,您的问题需要进行一些扩展

课堂就是一个食谱。对象是用该配方制作的实际菜肴

所以,如果你想知道菜谱的味道,你需要做点什么

在设计时,您通常会考虑类。也就是说,当你计划一顿晚餐时,你考虑的是你想要提供什么,是食谱,而不是成品。(在烹饪之前,你不会有这些菜。)也就是说,你可能会考虑到一些食谱很难执行,因此提供这些菜是一个危险的提议

这有意义吗

关于设计,您需要问自己一些问题:

您是否需要ObjectA,因为它们都存储同名的id?(大概他们是绑在一起的。)

这两者有什么区别

这可以组合成一个对象吗


这取决于方法的作用和id的实际情况。

此外,您应该在类b的构造函数中尝试分配任何必需的信息

因此:

可能成为:

$myObjB = new Object_B($row["descId"]);
$myDescName = $myObjB->get_description();

这有助于使B尽可能独立,这通常是OO的目标之一。

此外,在B类的构造过程中,您应该尝试分配任何必需的信息

因此:

可能成为:

$myObjB = new Object_B($row["descId"]);
$myDescName = $myObjB->get_description();

这有助于使B尽可能独立,这通常是OO的目标之一。

这些对象应该是什么?您的示例代码与您的意图描述不太匹配。i、 e.示例中没有对象A。@George while代码段是从ObjectAth调用的,这是示例中显示的一个非常关键的内容。这有很大的不同。更新了示例。谢谢。这可以合并成一节课。如果属性
DescId
来自数据库,我甚至看不出它的用途。实际上,
getDescNameById
可能只是一个过程函数,它接受
descId
作为参数并返回名称。这一切都取决于类的用途和方法的实际操作方式。这些对象应该是什么?您的示例代码与您的意图描述不太匹配。i、 e.示例中没有对象A。@George while代码段是从ObjectAth调用的,这是示例中显示的一个非常关键的内容。这有很大的不同。更新了示例。谢谢。这可以合并成一节课。如果属性
DescId
来自数据库,我甚至看不出它的用途。实际上,
getDescNameById
可能只是一个过程函数,它接受
descId
作为参数并返回名称。这一切都取决于类的用途和方法的实际操作方式。。。正如你所提到的,我在设计上把这些物体与桌子结构紧密地结合在一起。我想你是在建议我实际设计一个对象,而不是根据数据的来源。@Jeff是的,非常正确:
你是在建议我实际设计一个对象,而不是根据数据的来源。
足够公平。。。正如你所提到的,我在设计上把这些物体与桌子结构紧密地结合在一起。我想你是在建议我实际设计一个对象,而不是数据来源。@Jeff是的,非常正确:
你是在建议我实际设计一个对象,而不是数据来源。