5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享

唤触芦交台捂残链徽睦熔希浚

恢复项目到多模块状态

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第1张

公共操作即构造方法

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第2张

<?php
namespace app\index\controller;
class Index
{
    private $lession;
    public function demo1()
    {
        return $this->lession;
    }
    public function demo2()
    {
        return $this->lession;
    }
}

执行demo1,demo2方法,无显示是正确的

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第3张

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第4张

使用构造函数初始化$lession

<?php
namespace app\index\controller;
class Index
{
    private $lession;
    public function __construct($lession="ThinkPHP5")
    {
        $this->lession=$lession;
    }
    public function demo1()
    {
        return (new self('萌面人资料铺'))->lession;
    }
    public function demo2()
    {
        return $this->lession;
    }
}

执行:

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第5张

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第6张


使用系统的controller控制器中的初始化方法简化操作

D:\phpStudy\PHPTutorial\WWW\tp5\thinkphp\library\think\Controller.php:

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第7张

_initialize()默认方法体为空,在控制器基类的构造方法中调用

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第8张

现在只需要继承系统的controller类,并重写_initialize()即可

D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:

<?php
namespace app\index\controller;
class Index extends \think\Controller
{
    private $lession;
    public function _initialize($lession="ThinkPHP5")
    {
        $this->lession=$lession;
    }
    public function demo1()
    {
        $this->_initialize('www.xuexianswer.com');
        return $this->lession;
    }
    public function demo2()
    {
        return $this->lession;
    }
}

这里的_initialize()相当于__construct(),使用时它只是一个普通方法,直接调用即可

执行:

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第9张

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第10张


5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第11张

创建公共控制器Base.php

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第12张

<?php
namespace app\index\controller;
class Base extends \think\Controller
{
    protected $siteName="萌面人资料铺";
    public function test()
    {
        return "欢迎来到".$this->siteName;
    }
}

Index.php:

<?php
namespace app\index\controller;
class Index extends \app\index\controller\Base
{
    public function demo()
    {
        return $this->siteName;
    }
}

执行:

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第13张

创建demo1()访问公共控制器中的test()方法

<?php
namespace app\index\controller;
class Index extends \app\index\controller\Base
{
    public function demo()
    {
        //访问公共控制器中的$siteName
        return $this->siteName;
    }
    public function demo1()
    {
        //访问公共控制器中的test()
        return $this->test();
    }
}

执行:

5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第14张

总结:继承了Base类,因为Base类继承了系统的控制器Controller类,所以Index类不用再继承Controller类


5-4ThinkPHP5如何创建公共控制器与公共操作:继承与共享第15张


炮恳烫慨秦镜毯彼腾嗓钡内斑