tp3.2的__construct和_initialize方法】的更多相关文章

在tp3.2框架里面,有一个php自带的__construct()构造函数和tp3自带的构造函数_initialize()的实行顺序是先实行 php自带的__construct()构造函数 再实行 tp3自带的构造函数_initialize() 源码:…
1.假设 一个AdminController.class.php 集成至 \Think\Controller 类, 我们来看看Controller.class.php的构造方法源码: /** * 架构函数 取得模板对象实例 * @access public */ public function __construct() { Hook::listen('action_begin',$this->config); //实例化视图类 $this->view = Think::instance('T…
参考网址:http://gongwen.sinaapp.com/article-59.html 控制器扩展接口 系统Action类提供了一个初始化方法_initialize接口,可以用于扩展需要,_initialize方法会在所有操作方法调用之前首先执行,查看TP源码实现原理如下: public function __construct() { tag('action_begin',$this->config);         //实例化视图类         $this->view    …
子类的_initialize方法自动调用父类的_initialize方法. 而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct(); parent::_initialize() 是调用父类的_initialize方法,如果你的父类_initialize函数没有任何内容,不需要写parent::_initialize() <?php class BaseAction extends Action { // 继承Thinkph…
ThinkPHP支持两种构造方法:  __construct和_initialize(ThinkPHP内置的构造方法). 测试URL为:  http://oa.com/index.php/Admin/User/add 修改用户控制器类文件UserController.class.php 如下: 1.__construct构造方法 修改中间控制器类CommonController.class.php 如下: 说明:empty() 5.5 版本之后支持表达式,否则会报如下错误: 运行结果如下: 中间…
子类的_initialize方法自动调用父类的_initialize方法.而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct(); <?php class BaseAction extends Action { // 继承Thinkphp protected function _initialize() { // thinkphp中的函数 echo "Base class"; } } 子类如果没有_init…
ThinkPHP框架中的__construct和_initialize的使用 父类(PlatformController.class.php): class PlatformController extends Controller{ public function __construct(){ echo 'PlatformController' . "<br>"; //调用父类的构造函数 parent::__construct(); echo 'PlatformContr…
大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法.构 造函数的声明与其它操作的声明一样,只是其名称必须是__construct( ).这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人用了,这样做的好处是可以使构 造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称了.为了向下兼容,如果一个类中没有名为__construct( )的方法…
我们在使用了__construct构造函数,覆盖了父类的构造函数,导致父类tp的方法无法使用,例如$this->display(),解决办法是: 在__construct函数中调用一下父类的构造函数. function __construct(){ parent::__construct(); }…
1.Action类中的_initialize()函数,先于任何自定义操作函数运行,可认为是控制器的前置操作.可用于检测用户是否登录等检测. 如果多个模块(Action)需要相同_initialize(),可以先定义一个CommonAction extends Action类,然后其他类继承CommonAction类. 2.SESSION销毁:session_unset();session_destory(); 3.//分组列表    'APP_GROUP_LIST'=>'Index,Admin'…
<?phpclass person{ var $name; var $sex; var $age;//构造方法 function __construct($name, $sex, $age) { //通过构造方法 给传进来的在$name给成员属性$this->name进行赋值 $this->name = $name; //通过构造方法 给传进来的在$age给成员属性$this->age进行赋值 $this->age = $age; //通过构造方法 给传进来的在$sex给成员…
1 config 配置: 'connection' => 'mysql://root:root@localhost:3306/dbname', connection  数据库连接字符串,后面代码会用到 root:root  数据库账号:数据库密码 localhost  数据库服务器地址,例如:192.168.1.11的ip地址 3306  数据库端口 dbname  需要连接的数据库名称 2 调用: $DB= M('test','tp_','connection'); $DB就是实例化的模型,可…
/** * 时间段查询条件获取 * @param string $star 获取开始时间的字段名 * @param string $end 获取结束时间的字段名 * @param string $zd 数据库where条件的字段名 */ function where_time($start='start_time',$end='end_time',$zd='create_time'){ $start_time=I('get.'.$start,'','filter_str'); $end_time…
_initialize()方法是在任何方法执行之前,都要执行的,当然也包括 __construct构造函数. 也就是说如果存在_initialize()函数,调用对象的任何方法都会导致_initialize()函数的自动调用,而__construct()构造函数仅仅在创建对象的时候调用一次,跟其它方法调用没有关系. __construct这里是双划线,而_initialize()函数是单划线 如果父子类均有_initialize()函数,则子类覆盖了父类的,如果子类没有而父类有,则子类继承父类的…
_initialize()方法是在任何方法执行之前,都要执行的,当然也包括 __construct构造函数. 也就是说如果存在_initialize()函数,调用对象的任何方法都会导致_initialize()函数的自动调用,而__construct()构造函数仅仅在创建对象的时候调用一次,跟其它方法调用没有关系. __construct这里是双划线,而_initialize()函数是单划线 如果父子类均有_initialize()函数,则子类覆盖了父类的,如果子类没有而父类有,则子类继承父类的…
在建立网站的时候,你通常想着把一些共有的方法提取出来,放入一个控制器内,如果你是将业务逻辑写入了构造函数里面,那么就得注意了. 在thinkphp5.0当中,有一个初始化的方法,类似于构造函数,那就是_initialize(). 但是如果你在父类和子类当中同时使用该方法时,会将父类的_initialize()方法覆盖掉. 如下:我贴出部分代码: class Admin extends CommonMethod { private $adminModel; public function _ini…
public function _initialize() { parent::_initialize(); } public function __construct() { $; parent::__construct(); } 和构造方法一样,但是在thinkphp中,是先实行 _initialize()方法再实行__construct()方法! 记得继承父类的构造方法! 不然他先一本类的构造方法为最优先,不会理会之前写的,跟初始化控制器也是一样. 如果你要在初始化控制器上或者初始化方法上…
定义: PHP类中以两个下画线“__”开头的方法被称为魔术方法. 分类: 例如:构造方法:__construct:析构方法:__destruct:动态重载:__set().__get().__call().__callStatic():对象的克隆:__clone() 应用场景: 1.当程序试图修改一个不存在或不可见的类属性时,PHP引擎将会调用__set()方法,当然前提是该方法在类中被定义.__set()的定义格式如下: function __set($name,$value){ //实现细节…
构造方法:__construct,析构方法:__destruct 代码示例: <?php class Person { public $name; public $age; public function __construct($name,$age) { $this->name=$name; $this->age=$age; } public function showInformation() { echo "<br/>姓名:".$this->n…
PHP系统中给我们提供了很多预定义的方法,这些方法大部分都需要在类中声明,只有需要时才添加到类中.它们的作用.方法名称.使用的参数列表和返回值都是在PHP中预定好的,并且都是以两个下划线开始的方法名称.如果需要使用这些方法,方法体中的内容需要用户自己按需求编写.每一个预定义的方法都有它特定的作用,使用时不需要用户直接调用,而是在特定的情况下自动被调用.这一节中使用到的__set().__get().__isset().和unset()四个方法,以及前面介绍过的构造方法“__construct()…
================================================ 1.__tostring()   用于定义输出对象引用时调用  常用于打印一些对象的信息 必须有返回值eg:有一个persion类Persion per =new persion()Echo per;    //直接调用会出错我们可以在类的定义中添加__tostring()方法 代码如下: function  __Tostring(){$str=this->$name.this->age;Retu…
介绍 中间件提供了一种方便的机制过滤进入应用程序的 HTTP 请求.例如,Laravel 包含一个中间件,验证您的应用程序的用户身份验证.如果用户未被认证,中间件会将用户重定向到登录界面.然而,如果用户通过身份验证,中间件将进一步允许请求到应用程序中. 当然,除了身份认证以外,还可以编写另外的中间件来执行各种任务.例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息:日志中间件可以记录所有传入应用的请求. Laravel 自带了一些中间件,包括身份验证.CSRF 保护等.所有这些…
2016年12月29日13:45:27    关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充   说道接口设计第一反应就是restful api 请理解一点,这个只是设计指导思想,也就是设计风格 ,比如你需要遵循这些原则 原则条件REST 指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是 RESTful.Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的.从客…
13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv 14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱动_高清.mp4 15集: ThinkPHP3.1.3使用视频教程--通过后台管理许愿墙贴子与分页类的使用_高清.mp4 在editplus中 编译IndexAction.class.php文件时, 会提示" cannot find class 'Action'"? 这是因为, 你直接编译…
ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢? 在网上搜索,很多答案是两者是一样的,ThinkPHP中initialize相当于php的construct,这么说是错误的,如果这样,tp为什么不用construct,而要自己弄一个ThinkPHP版的initialize构造函数呢? 自己试一下就知道两者的不同了. a.php class a{ function __con…
控制器类(Action) 描述 Description ThinkPHP Action控制器基类 抽象类 位置:ThinkPHP/Lib/Core/Action.class.php 声明: abstract class Action {}   常量 Constants 无   属性 Properties 属性名 类型 访问 描述 view View protected 视图实例对象 默认为NULL name string private 当前Action名称 默认为空字符串   方法 Metho…
1.数据库查询中execute和query方法的区别 tp中execute()和query()方法都可以在参数里直接输入sql语句. 但是不同的是execute()通常用来执行insert或者update等sql语句,而query常用来执行select等语句. execute()方法将返回影响的记录数,如果执行sql的select语句的话,返回的结果将是表的总记录数. 2.tp5 Hook的用法 添加钩子: // 闭包 Hook::add('t123', function (){ echo 12…
Thinkphp: 在子控制器里面写了一个构造函数,如下 //构造函数 public function __construct(){ echo 1; } 结果页面报错了  ---->  Call to a member function assign() on null 然后去继承的父类里面一看,原来里面写了一个_initialize()的方法,原来是子类的构造函数覆盖了父类的,所以报错了,所以需要继承一下父类的构造函数: parent::__construct(); 其实_initialize…
下面是基础的PHP的代码,不断完善中~ //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH 变量名建议用下划线方式分隔 // $var_name 函数名建议用驼峰命名法 // varName 定界符建议全大写 // <<<DING, <<<'DING' 文件名建议全小写和下划线.数字 // func_name.php 私有属性名.方…
自己写一个BasicController继承了官方的Controller,将判断登录的代码放在BasicController中,然后让其他自己编写的Controller都继承BasicController. 这里使用了_initialize()方法. class BasicController extends Controller { public function _initialize(){ //获取登录的cookie,正常则返回uid,没有或异常则返回false,具体略 $uid = ge…