内部函数的OOP函数或其他函数的一个函数返回值(内部简单示例)

时间:2015-11-29 01:11:29

标签: php oop

我有2个代码的示例1

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

$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 个答案:

答案 0 :(得分:1)

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

  1. 在此处发布课程名称,属性,方法签名
  2. 是同一类的::getGoodsList()::getCategory($goods_id)方法吗?
  3. 即使您将其视为公开
  4. ,也请使用私有/受保护/私有方法可见性关键字
  5. 两个主要问题:1。是否会在类可见范围之外的某处使用::getCategory($goods_id)方法。 2.您是否需要再次在代码中使用下面的项目类别。回答4.1为“否”也会产生4.2“否”。
  6. 如果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。是“否”,如果你不打算扩展类,或者你不需要类 - 后代中的方法并使用你的方法#2,则将其声明为protectedprivate: / p>

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