导航:首页 > 编程语言 > php类构造函数继承

php类构造函数继承

发布时间:2022-11-27 01:51:22

php5的构造函数和析构函数有哪些

构造函数:void __construct ([ mixed $args [, $... ]] )
PHP5允许开发人员为类定义构造函数。包含构造函数的类在创建实例时将自动调用其构造函数,所以构造函数适合完成初始化对象的操作。
注意:如果子类定义了构造函数,那么父类的构造函数将不会被自动的隐式的调用。如果需要运行父类的构造函数,需要执行parent::__construct()。如果子类没有显式的定义构造函数,那么子类将继承父类的构造函数,并直接运行。 析构函数:
PHP5引入了析构函数的概念,类似于C++等面向对象语言中的析构函数的概念。析构函数在类实例的引用失效时、对象被销毁、超出作用域、以及任意关闭序列时,将被调用。 注意:类似构造函数,当子类定义了自己的析构函数,需要使用parent::__destruct()来调用父类的析构函数。

② php 子类没有构造函数会调用父类构造函数吗

会调用的,试试下面的代码:

<?php
class f
{
function f()
{echo 'in f';}
}
class z extends f
{
function show()
{echo 'in z';}
}
$z=new z;
$z->show();
?>

③ PHP子类能否继承父类的构造方法

1. new son 这个类的时候,会先调用 基类 father 的构造函数2.基类构造函数 又调用 init(); 所以输出father3.private 只能限制son 不能直接访问father类 init,但是不能限制 基类调用 自身的private 方法

④ PHP构造函数传递值的问题

__construct($hostname)里面的参数是构造函数的参数,只能在构造函数内部调用,
public $hostname;这是类的参数,整个类内部包括继承类都可以调用

第二种的参数只能在构造函数中使用,而第一种,则将传来的参数赋值给类的变量,所以第一种的hostname整个类内部的方法都可以使用$this->hostname来调用

⑤ php 构造函数中的变量不能被其他函数使用吗

test类用extends继承了tools类,如果tools类里面有构造方法的话,test是可以用的。tools的私有成员不能使用,其他都可以。至于构造函数,定义js函数有三种方式,有一种可以叫做构造函数方法定义。至于php中,应该没这说法,在类外面的function叫函数,在类里面见方法或构造方法。

⑥ php 子类继承父类的构造方法

调用父类的构造函数,就是说子类的构造函数和父类一样

⑦ php中parent::__construct()是什么意思

调用父类的构造函数:
class A {
public $name; //名字
function __construct($name){ //构造函数
$this->name = $name;
}

function test(){
echo $this->name;
}
}

//派生类
class B extends A{
function __construct(){
parent::__construct("测试"); //调用或者说继承父类的构造函数:
self::test();
}
}
$b = new B();

⑧ 在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢

1、如果父类和子类中都没有显式的定义__construct,在实例化子类对象时,只会隐含的调用子类自己的构造方法。

2、如果父类中有显式的构造方法__construct,而子类中没有定义__construct,在实例化子类对象时,就会调用父类中的构造方法。

3、如果父类和子类中都显式的定义了__construct,在实例化子类对象时,只会调用子类自己的构造方法(这就像是子类重构了父类的构造方法),而如果也想要调用父类的构造方法的话,就需要在子类的__construct 方法中显式的调用,(如 __construct(){ parent::_construct();})。


(8)php类构造函数继承扩展阅读

子类的构造函数名与子类名相同。

在子类里父类的构造函数不会自动执行。

要在子类里执行父类的构造函数,必须执行类似以下语句:

$this->[父类的构造函数名()]

类的构造函数统一命名为__construct()。

子类的构造函数名也是__construct()(也是废话)。

在子类里父类的构造函数会不会执行,分两种情况:

1、如子类不定义构造函数 __construct(),则父类的构造函数默认会被继承下来,且会自动执行。

2、如子类定义了构造函数 __construct(),因为构造函数名也是__construct(),所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。

这时如果要在子类里执行父类的构造函数,必须执行类似以下语句:parent::__construct();

⑨ PHP类的构造方法

构造方法是类中的一个特殊方法。当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须是 __construct() 。所以通常用它执行一些有用的初始化任务。该方法无返回值。
如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。

与构造方法对应的就是析构方法,析构方法会在某个对象的所有引用都被删除或者当对象被显式销毁之前执行的一些操作或者功能。析构函数不能带有任何参数,其名称必须是 __destruct() 。
同样,如果子类中定义了析构函数则不会暗中调用其父类的析构函数。要执行父类的析构函数,需要在子类的析构函数中调用 parent::__destruct()。

注意:在析构函数中抛出一个异常会导致致命错误。
<?php

class Construct{
protected $a;
protected $b;
function __construct($a,$b){ //定义构造函数
$this->a=$a;
$this->b=$b;
}
function __destruct(){ //重新定义为初始值
$result=0;
echo '恢复乘积的初始值:'.$result;
}
}

class son extends construct{
private $c;
function __construct($c){
parent::__construct(6,10); //调用父类的构造方法,使用方法:parent::__construct(); 有参数加参数
$this->c=$c;
}
function show(){
$result=$this->a*$this->b*$this->c;
print 'abc的乘积是:'.$result.' ';
}
function __destruct(){
parent::__destruct(); //调用父类的析构函数,使用方式:parent::__destruct();
}
}

$test=new son(12); //实例化对象
$test->show(); //abc的乘积是:720 恢复乘积的初始值:0

?>

⑩ PHP5,声明构造函数使用什么关键字,析构函数使用什么关键字

PHP还是比较常用的,于是我研究了一下PHP构造函数,在这里拿出来和大家分享一下,希望对大家有用。如果你在一个类中声明一个函数,命名为__construct,这个函数将被当成是一个构造函数并在建立一个对象实例时被执行.清楚地说,__是两个下划线.就像其它任何函数一样,构造函数可能有参数或者默认值.你可以定义一个类来建立一个对象并将其属性全放在一个语句(statement)中.
你也可以定义一个名为__destruct的函数,PHP将在对象被销毁前调用这个函数.它称为析构函数.继承是类的一个强大功能.一个类(子类/派生类)可以继承另一类(父类/基类)的功能.派生类将包含有基类的所有属性和方法,并可以在派生类中加上其他属性和方法.你也可以覆写基类的方法和属性.就像3.1.2中显示的,你可以用extends关键字来继承一个类.
你可能想知道构造函数是如何被继承的.当它们和其它方法一起被继承时,他们不会在创建对象时被执行.如果你需要这个功能,你需要用第二章提到的::运算符.它允许你指向一块命名空间.parent指向父类命名空间,你可以用parent::__construct来调用父类的构造函数.

一些面向对象语言在类之后命名构造函数.PHP的前几个版本也是如此,到现在这种方法仍然有效.也就是:如果你把一个类命名为Animal并且在其中建立一个命名也是Animal的方法,则这个方法就是构造函数.如果一个类的同时拥有__construt构造函数和与类名相同的函数,PHP将把__construct看作构造函数.这使得用以前的PHP版本所写的类仍然可以使用.但新的脚本(PHP5)应当使用__construct.

PHP的这种新的声明构造函数的方法可以使构造函数有一个独一无二的名称,无论它所在的类的名称是什么.这样你在改变类的名称时,就不需要改变构造函数的名称.你可能在PHP中给构造函数一个像其它类方法一样的访问方式.访问方式将会影响从一定范围内实例化对象的能力.这允许实现一些固定的设计模式,如Singleton模式.析构函数,相反于构造函数.PHP调用它们来将一个对象从内存中销毁.默认地,PHP仅仅释放对象属性所占用的内存并销毁对象相关的资源.析构函数允许你在使用一个对象之后执行任意代码来清除内存.
当PHP决定你的脚本不再与对象相关时,析构函数将被调用.在一个函数的命名空间内,这会发生在函数return的时候.对于全局变量,这发生于脚本结束的时候.如果你想明确地销毁一个对象,你可以给指向该对象的变量分配任何其它值.通常将变量赋值勤为NULL或者调用unset.
下面的例子中,计算从类中实例化的对象的个数.Counter类从PHP构造函数开始增值,在析构函数减值.一旦你定义了一个类,你可以用new来建立一个这个类的实例.类的定义是设计图,实例则是放在装配线上的元件.New需要类的名称,并返回该类的一个实例.如果PHP构造函数需要参数,你应当在new后输入参数.
<?phpclassCounter { privatestatic$count=0; function__construct() { self::$count++; } function__destruct() { self::$count--; } functiongetCount() { returnself::$count; } } //建立第一个实例 $c=newCounter();//输出1 print($c->getCount()."<br>n"); //建立第二个实例 $c2=newCounter(); //输出2 print($c->getCount()."<br>n"); //销毁实例 $c2=NULL; //输出1 print($c->getCount()."<br>n");?>

与构造函数相反,在PHP5中,可以定义一个名为__destruct()的函数,称之为PHP5析构函数,PHP将在对象在内存中被销毁前调用析构函数,使对象在彻底消失之前完成一些工作。对象在销毁一般可以通过赋值为null实现。

阅读全文

与php类构造函数继承相关的资料

热点内容
中国移动长沙dns服务器地址 浏览:249
wifi密码加密了怎么破解吗 浏览:596
linux命令cpu使用率 浏览:67
linux实用命令 浏览:238
传奇引擎修改在线时间命令 浏览:109
php取域名中间 浏览:897
cad命令栏太小 浏览:830
php开发环境搭建eclipse 浏览:480
qt文件夹名称大全 浏览:212
金山云服务器架构 浏览:230
安卓系统笔记本怎么切换系统 浏览:618
u盘加密快2个小时还没有搞完 浏览:93
小米有品商家版app叫什么 浏览:94
行命令调用 浏览:436
菜鸟裹裹员用什么app 浏览:273
穷查理宝典pdf下载 浏览:514
csgo您已被禁用此服务器怎么办 浏览:398
打开加密软件的方法 浏览:156
云存储服务器可靠吗 浏览:967
2核1g的云服务器能带动游戏嘛 浏览:898