OOP-函数内部的函数或一个函数为另一个函数返回值(内部的简单示例)


OOP- function inside function or one function return value for the other function (simple example inside)

我有两个用于1个的代码示例

1) -在第一个例子中-first函数返回结果并将其传递给第二个函数。

$goods_id = $_POST['goods_id'];
$goods_category = $this->getCategory($goods_id);
$goods_list = $this->getGoodsList($goods_category);
function getCategory($goods_id){
    ...
    return $goods_category;
}
function getGoodsList($goods_category){
    ...
    return $goods_list;
}

2) -在第二个示例中-第一个函数使用第二个函数获取值,然后返回结果。

$goods_id = $_POST['goods_id'];
$goods_list = $this->getGoodsList($goods_id);
function getGoodsList($goods_id){
    ...
    $goods_category = $this->getCategory($goods_id);
    ...
    return $goods_list;
}
function getCategory($goods_id){
    ...
    return $goods_category;
}

我应该使用什么代码示例($goods_category不会在其他地方使用)?

在回答此问题之前,您应该完成以下先决条件:

  1. 在此处张贴类名、属性、方法签名
  2. ::getGoodsList()::getCategory($goods_id)方法是否属于同一类
  3. 请使用private/protected/private方法可见性关键字,即使您认为它们都是public
  4. 主要有两个问题:1。CCD_ 3方法是否会在类可见性范围之外的某个地方使用。2.是否需要再次在代码中输入以下项目类别。将4.1回答为"否"也会得到4.2的"否"

如果4.1。是"是"和4.2。"是",然后将::getCategory($goods_id)声明为public,并使用选项#1。即,将类别分配给$goods_category,并在下面的任何位置使用它。

如果4.1。是"是"和4.2。"否",然后将::getCategory($goods_id)声明为public,您可以将代码重写为类似的内容

$goods_list = $class->getGoodsList($class->getCategory($goods_id));

请注意,应该避免3-4个以上的嵌套方法调用。2可能还可以(我的口味),但一行中超过5个会使行变长,无法阅读。然而,这完全取决于应用程序的逻辑、内存使用情况和其他因素,因此不是一般的建议。

如果4.1。是"否"和4.2。如果为"否",则声明为protectedprivate,如果您不打算扩展该类,或者在类的子代中不需要该方法,并使用方法#2:

class Util {
    public function getGoodsList($goods_id) {
        ...
        $goods_category = $this->getCategory($goods_id);
        ...
        return $goods_list;
    }
    protected function getCategory($goods_id) {
        ...
        return $goods_category;
    }
}