ThinkPHP子类继承Controller类的注意事项
在实际的开发中,往往有很多子类都继承自同一个父类,然后该父类再继承自框架内置类的需求。
比如:
class Init extends Controller{...}
class son1 extends Init{...}
class son2 extends Init{...}
....
若在Init类中,重写了构造函数:
public function __construct(){...}
则会发现,子类无法使用框架内置Controller类的一些功能,比如子类中$this->fetch(‘view’)就会报错,错误提示为:在非对象类型中用调用了方法。
由OOP的基础知识,错误的原因产生于子类重写了构造函数,解决方法就是在子类构造函数中,重新执行一遍父类的构造函数,如在Init类中:
class Init extends Controller
{
public function __construct()
{
// 一定要先执行Controller的构造函数
parent::__construct();
....
}
}
这样在继承框架类功能的同时,又可以新增一些自己想要的功能。
其实不仅继承Conroller类后重写构造函数时需要如此,凡是需要在子类中用到自己的构造函数时,都应该记得重新执行一遍框架父类的构造函数。
ThinkPHP子类继承Controller类的注意事项的更多相关文章
- Objective-C 继承与类
创建: 2018/01/20 完成: 2018/01/21 更新: 2018/01/22 标题前增加 [Objective-C] 继承的概念 父类与子类 ●继承: 继承其他类 ●父类: 被继承的类 ...
- 3.自定义返回json格式的数据给前台(自定义Controller类中的Json方法)
在mvc的项目中,我们前台做一些操作时,后台要返回一些结果给前台,这个时候我们就需要有一个状态来标识到底是什么类型的错误, 例如: 执行删除的时候,如果操作成功(1行受影响),我们需要返回状态为1并输 ...
- 线程创建的三种方法:继承Thread类,实现Runnable接口,实现Callable接口
线程创建 三种创建方式 1. 继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 线程不一定执行,CPU按排调度 pa ...
- Thinkphp5.0 在自己定义一个公共方法的控制器并且继承了Controller类的时候报错
在建立网站的时候,你通常想着把一些共有的方法提取出来,放入一个控制器内,如果你是将业务逻辑写入了构造函数里面,那么就得注意了. 在thinkphp5.0当中,有一个初始化的方法,类似于构造函数,那就是 ...
- Python 派生类子类继承类
1.创建list类的子类Namedlist,初始化新类,创建新对象实例johnny,检查对象类型,并使用list的一些功能来存储数据 >>> class Namedlist(list ...
- Core Java (十一) Java 继承,类,超类和子类
Core Java (十一) Java 继承,类,超类和子类 标签: javaJavaJAVA 2013-01-22 17:08 1274人阅读 评论(0) 收藏 举报 分类: java(58) 读 ...
- 2019-7-29-C#-在基类定义好方法让子类继承接口就能实现
title author date CreateTime categories C# 在基类定义好方法让子类继承接口就能实现 lindexi 2019-07-29 09:57:49 +0800 201 ...
- C# 在基类定义好方法让子类继承接口就能实现
在 C# 里面,接口的定义只需要类里面存在和接口声明相同的方法或属性就可以,而存在的方法或属性是在子类定义的还是基类里面定义的都无所谓.也就是在基类里面写好了方法,但不继承接口,等子类继承接口的时候就 ...
- C#中通过类来继承两个接口,父类实例化接口中的方法,子类继承父类,调用方法
实现了父类继承接口,父类实例化接口的方法,子类继承父类,子类调用父类的方法直接使用 代码如下: using System; using System.Collections.Generic; usin ...
随机推荐
- 网站简介-为什么网站的ICO图标更新后,ie浏览器没有更新过来?
为什么网站的ICO图标更新后,ie浏览器没有更新过来? 如何更新本地ico图标? 收藏夹里的网址访问后网站ico小图标怎么不会更新,还是没图标的. 如果制作了一个新的favicon.ico图标,并且已 ...
- Android给TextView设置多个字体颜色
效果如下:
- SSH配置文件详解
SSH:是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能. 在RHEL系统中SSH使用的是OpenSSH服务器,由opensh,openssh-server等软件包提供的. sshd ...
- 三种方式控制GPIO
BBB为REV C,emmc4G版本,系统为Debian 7.9 wheezy (2015.11.12),内核为Linux 3.8.13.使用命令cat /etc/dogtag查看 查看系统信息的四种 ...
- Python的可迭代对象、迭代器和生成器
可迭代对象(Iterable) 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable. 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.t ...
- C# Microsoft.Office不存在空间名称Interop和Excel
在实际开发过程中,我们经常会对Excel表进行操作.相信大家都都已经很熟悉C#操作Excel的步骤:添加引用->COM->Microsoft Office Excel 11 Object. ...
- WPF圆角按钮与触发颜色变化
<Button x:Name="button1" Content="按钮1" Margin="10,10,0,0" Cursor=&q ...
- 【Linux】【JDK】常用命令使用集和裸机配置JDK步骤。
使用Zstack创建完成后的linux服务器,使用SSH登录后,就是一下图,可以查看当前路径下的所有文件. 1.常用的命令: 列出当前文件夹下内容:ll 查看目录中的文件 :ls 创建文件夹:mkdi ...
- 【Tomcat】Tomcat安装及Eclipse配置教程
==================================================================================================== ...
- 【Selenium-WebDriver自学】Selenium-IDE安装和使用(一)
==================================================================================================== ...