这篇文章主要介绍了ThinkPHP中_initialize()和类的构造函数_construct()用法,以实例形式分析了ThinkPHP中类的初始化时构造子类的方法,是采用ThinkPHP进行面向对象程序设计中比较重要的概念,需要的朋友可以参考下本文实例分析了Thin...
PHP4.x 版本:
PHP 4.x 的构造函数名与类名相同。
子类的构造函数名与子类名相同(废话)。
在子类里父类的构造函数不会自动执行。
要在子类里执行父类的构造函数,必须执行类似以下语句:
$this->[父类的构造函数名()]
class base1 {
function base1() {
echo 'this is base1 construct';
}
}
class class1 extends base1 {
function class1() {
$this -> base1();
echo 'this is class1 construct';
}
}
$c1 = new class1;
PHP5.x 版本:
PHP5.0 以上版本对类的功能进行了很大的扩充。类的构造函数统一命名为__construct()。
子类的构造函数名也是__construct()(也是废话)。
在子类里父类的构造函数会不会执行,分两种情况:
1、如子类不定义构造函数 __construct(),则父类的构造函数默认会被继承下来,且会自动执行。
2、如子类定义了构造函数 __construct(),因为构造函数名也是__construct(),所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。
这时如果要在子类里执行父类的构造函数,必须执行类似以下语句:parent::__construct();
class base2 {
function __construct() {
echo 'this is base2 construct';
}
function __destruct() {}
}
class class2 extends base2 {
function __construct() {
parent::__construct();
echo 'this is class2 construct';
}
}
注意 parent::__construct(); 语句不一定必须放在子类的构造函数中。放在子类的构造函数中仅仅保证了其在子类被实例化时自动执行。
PHP4.0 和 5.0 类构造函数的兼容问题:
在 PHP5.0 以上版本里,还兼容了 4.0 版本的构造函数的定义规则。如果同时定义了4.0的构造函数和 __construct()函数,则__construct() 函数优先。
为了使类代码同时兼容 PHP4.0 和 5.0,可以采取以下的方式:class class3 {
function __construct() //for PHP5.0
{
echo 'this is class2 construct';
}
function class3() //for PHP4.0
{
$this -> __construct();
}
}
$c3 = new class3;
上面的内容引自"小炒花生米"大哥,谢谢大哥的分享。
以上就介绍了php面向对象(OOP)—不同php版本构造方法的继承和兼容,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
这篇文章主要介绍了ThinkPHP中_initialize()和类的构造函数_construct()用法,以实例形式分析了ThinkPHP中类的初始化时构造子类的方法,是采用ThinkPHP进行面向对象程序设计中比较重要的概念,需要的朋友可以参考下本文实例分析了Thin...
...已有的魔术方法。
目前php已有的魔术方法有 __construct,__destruct,__call,__get,__set,__isset,__unset,__sleep,__wakeup,__toString,__set_state 和 __clone。
本节将讲讲__cons
...化,但就是不知道错误在哪里。定义和用法construct() 函数创建一个新的 SimpleXMLElement 对象。如果成功,则该函数返回一个对象。如果失败,则返回 false。语法construct(data,options,is_url,ns,is_prefix)
...>
例子:
class P
{
public__construct()
{
echo“parent::construct”;
}
}
class D extends P
{
public__const
...如下: class A{ private $_name = 'A'; function __construct(){ echo 'A construct '; } function test(){ echo 'A test() '; } } class B extends A{ private
这篇文章主要介绍了ThinkPHP中类的构造函数_construct()与_initialize()的区别,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。前言相信熟悉THINKPHP的phper基本上都很熟悉_initialize()这个方法...
class aaa{ var $b; function __construct($x){ $this->b= $x; } function b($x) { $this->__construct($x); } function c{..
php5开始可以在类中声明__construct构造方法,当对象被实例化的时候,该方法被调用。 需注意: 1.如果在继承的子类中没有构造方法而父类中有构造方法,那么当实例化子类时,父类的构造方法会被隐式调用。2.如果子...
...称为"魔术方法"(Magic methods)。比如之前讲过的__construct(), __destruct (), __clone(),以及__call(),,__get(), __set(),__sleep(), __wakeup(), __toString(),
PHP 魔术方法 __construct __destruct (一),phpdestruct慢慢长寻夜,明月高空挂
__construct() - 在每次创建新对象时先调用此方法
__destruct() - 对象的所有引用都被删除或者当对象被显式销毁时执行