douwan7382 2016-07-26 14:20
浏览 46
已采纳

在课堂上正确使用include

I have a main class in index.php:

class myClass {

    public function lorem() {
        include_once 'extendClass.php';
    }

    public function __construct() {
        $this->lorem();
    }

}

// run class
new extendClass();

I need to include_once 'extendClass.php' within the lorem() function.

In my extendClass.php file, I extend the class function with:

class extendClass extends myClass {

    public function lorem(){
        echo "foo bar";
        parent::lorem();

    }

}

When I use new extendClass() in index.php, I get an error because the include_once() is not triggered. What's the solution to this puzzle?

Note: include_once() must be within myClass.

  • 写回答

1条回答 默认 最新

  • doushiposong30622 2016-07-26 14:41
    关注

    There's two problems here

    1. You're creating a child class that's overwriting the lorem() function. You would have to explicitly call parent::lorem() to get to it
    2. Even if you call it, that parent function doing the include means that anything defined in that function is locally scoped to that function. So that means your child function can't inherit it (at least not without some sort of return declaration)

    You need to move the include outside your class declaration

    include_once 'extendClass.php';
    class myClass {
    
        public function lorem() {
        }
    
        public function __construct() {
            $this->lorem();
        }
    
    }
    
    // run class
    new extendClass();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!