❶ 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析构函数__destruct()的问题。
析构函数是在对象销毁时调用的代码。
当这个对象用完之后,会自动执行这个函数中的语句。
把数据库关闭的代码放在这里。就是在对象被销毁的时候顺便把数据库连接关闭了。
❸ 请问PHP构造函数的含义
php的两大oop使用型函数:构造函数(__construct)和析构函数(__destruct );
构造函数:当在某一页面写了众多函数,其中就包括构造函数,当你调用其中任一函数时,都将在调用此函数前先调用构造函数,如:你把链接数据库代码写到构造函数里面,然后在使用增删改查时,就不用再写连接s数据库语句了,因为有构造函数在,你就只用写增删改查类sql语句就可以了。
析构函数:和构造函数相反,在同一页面内,有众多函数,其中有析构函数,当你调用了某一函数之后,会自动执行析构函数,比如说你的增删改查用完了,是不是要关闭数据库连接来释放内存?析构函数就是这样用的。
❹ php: 到底什么是析构函数,举个简单例子加以说明!什么时候会用到
和
构造函数
是一对
析构函数
:
对象销毁(或者注销)的时候执行
比如定义了一个class
a
如果
令$a=NULL;则析构函数执行。
❺ 一个完整的PHP类包含的七种语法说明
这篇文章主要介绍了一个完整的PHP类包含的七种语法说明,这些语法包括属性、静态属性、方法、静态方法、类常量、构造函数、析构函数,本文一一给代码示例和详细注解让你快速了解类的写法,需要的朋友可以参考下
类中的七种语法说明
-属性
-静态属性
-方法
-静态方法
-类常量
-构造函数
-析构函数
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
?php
class
Student
{
//
类里的属性、方法和函数的访问权限有
(函数和方法是同一个概念)
//
private
私有的
protected
受保护的
public
公有的
//
类常量
没有访问权限修饰符
const
STUDENT
=
'Tom';
//
属性
public
$stu_name;
//
静态属性
public
static
$stu_num
=
1;
//
方法
public
function
stuFunction()
{
echo
'non_static_function','br
/';
}
//
静态方法
public
static
function
static_stuFunction()
{
echo
'static_function','br
/';
}
//
构造函数
创建对象时自动调用
public
function
__construct($stu_name)
{
$this-stu_name
=
$stu_name;
echo
'__construct','br
/';
}
//
析构函数
销毁对象时自动调用
public
function
__destruct()
{
echo
'__destruct','br
/';
}
}
//
实例化类对象
$object
=
new
Student('Tom');
//
对象调用属性
echo
$object-stu_name,'br
/';
//
对象调用静态属性
echo
$object::$stu_num,'br
/';
//
类调用静态属性
echo
Student::$stu_num,'br
/';
//
使用对象分别调用方法和静态方法
$object-stuFunction();
$object-static_stuFunction();
$object::stuFunction();
$object::static_stuFunction();
//
使用类分别调用方法和静态方法
Student::stuFunction();
Student::static_stuFunction();
//
类调用类常量
echo
Student::STUDENT,'br
/';
总结:
对象可以调用方法和静态方法,类可以调用方法和静态方法。
❻ PHP中的__destruct()析构函数是一个空方法,还是会执行什么功能
同其他语言中的析构函数功能差不多,PHP中析构函数也是执行一些清理工作(如果非要加入其它的一些事情,那就另说了),其实PHP在脚本执行结束后就会销毁一切能够销毁的东西,不会浪费一丁点资源,没有析构的话也没什么关系了。但是,在脚本执行中,我们也会执行一些命令,让某些对象生命结束,如果没有析构,就只能由垃圾收集机制来运行了,这就浪费了一些资源。由此,显式析构的作用就出来了。
❼ 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
?>
❽ php 析构函数和session的毛病
php官网对构析函数的解释:
PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
这里举个例子
classobj{
publicfunction__destruct(){
echo'析构函数现在执行了';
}
}
$p=newobj();
$p=NULL;
则在屏幕上打印一句话
你看看是不是由外部调用的__destruct的方法?如果是,则改为public方法
再则看看该对象是否确实被销毁empty($obj)
我们不能判断脚本结束后,对象是否被销毁,则我们手动摧毁这个对象$obj = null;
❾ php5的构造函数和析构函数有哪些
构造函数:void __construct ([ mixed $args [, $... ]] )
PHP5允许开发人员为类定义构造函数。包含构造函数的类在创建实例时将自动调用其构造函数,所以构造函数适合完成初始化对象的操作。
注意:如果子类定义了构造函数,那么父类的构造函数将不会被自动的隐式的调用。如果需要运行父类的构造函数,需要执行parent::__construct()。如果子类没有显式的定义构造函数,那么子类将继承父类的构造函数,并直接运行。 析构函数:
PHP5引入了析构函数的概念,类似于C++等面向对象语言中的析构函数的概念。析构函数在类实例的引用失效时、对象被销毁、超出作用域、以及任意关闭序列时,将被调用。 注意:类似构造函数,当子类定义了自己的析构函数,需要使用parent::__destruct()来调用父类的析构函数。