php类构造
㈠ 哪位知道php中构造方法是什么意思
__construct() 用在类里的,构造函数,就是每次实例化类的时候会自动执行这个函数
㈡ PHP 什么是构造函数
魔术方法之一,在某种特定条件下会自动触发的方法,也可以叫函数,
构造函数,在类被实例化成对象时,会自动调用的函数(方法),不需要你手动调用。
一般做对象的初始化,数据的初始化,基于同一个类的每个对象都有相同的属性跟方法,
但是到具体的值是不一样的,例如: 人都有名字,但是名字会不一样,所以需要做初始化。
<?php
classPerson{
private$name;
publicfunction__construct($name){
$this->name=$name;
}
publicfunctiongetName(){
return$this->name;
}
}
$p1=newPerson('天');
echo$p1->getName();
㈢ php构造函数实例讲解
PHP官网定义:
复制代码
代码如下:
构造函数是类中的一个特殊函数,当使用
new
操作符创建一个类的实例时,构造函数将会自动调用。当函数与类同名时,这个函数将成为构造函数。如果一个类没有构造函数,则调用基类的构造函数,如果有的话,则调用自己的构造函数
如a.php一个class
a类:
复制代码
代码如下:
<?php
class
a{
function
__construct(){
echo
'class
a';
}
}
b.php有个class
b类继承a类:
复制代码
代码如下:
<?php
include
'a.php';
class
b
extends
a{
function
__construct(){
echo
'666666';
//parent::__construct();
}
function
index(){
echo
'index';
}
}
$test=new
b();
这样写的话,b类有自己的构造函数,那么实例化b类的时候,自动运行构造函数,此时默认不运行父类的构造函数,如果同时要运行父类构造函数,要声明parent::__construct();
复制代码
代码如下:
<?php
include
'a.php';
class
b
extends
a{
function
index(){
echo
'index';
}
}
$test=new
b();
此时b类没有自己的构造函数,那么将默认执行父类的构造函数。
㈣ php中的类构造函数是不是不能调用其他函数
可以执行的,任何类的构造函数就和普通的函数没任何使用区别,只不过类的构造函数在实例化对象的时候调用一次,如果函数中调用其他函数,被调用的函数必须是声明过的才可以
㈤ 谁能用比较通俗的语言解释一下php类中的构造函数,他的作用以及为什么会存在
从php5以后的版本,php的类就可以使用魔术方法了。
php规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。
PHP中的魔术方法有 :__construct,__destruct,__get, __set等
__get、__set这两个方法是为在类和他们的父类中没有声明的属性而设计的。
__get( $property ) 当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名
__set( $property, $value ) 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值
这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)。
在php语言中,类构造器有两种方法,一种是使用__construct,另一种是使用与类同名的方法。
__construct 构造方法,当一个对象创建时调用此方法,相对于PHP4使用此方法的好处是:可以使构造方法有一个独一无二的名称,无论它所在的类的名称是什么.这样你在改变类的名称时,就不需要改变构造方法的名称。
㈥ 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的构造函数有什么用途
太多了,函数的功能就是重复调用,规范代码
举两个简单的例子,用来做客户端表单验证,用来设置跳转
呵呵,而且你这个写的并不叫函数,是一个类
如果你有兴趣,还是找本好点的js书看看吧
㈧ PHP构造方法到底有什么用
构造是面向类的。空构造没有用的
构造主要有参数才有意思,传递值到对象内部,否则调用的是系统内置函数。
例:
$a=new class1; //空构,可忽略()
$b=new class1($abc);//传参数到对象内。
㈨ 谁能给我解释下PHP类中的这个构造函数,使用的是数组作为参数.
第1个 contruct 构造函数,正如一般构造函数的基本功能一样:对类成员属性进行实始化。
代码中,如果检测到传入的参数是个数组,就遍历数组,然后用
$this->$key = $val;
进行类成员属性的初始化。
这里 $key 就是 类成员属性 的名称,而 $val 是应该赋予的初始值。
㈩ PHP构造方法和析构方法
什么是构造方法
构造方法是类的一种特殊的方法,它的主要作用是完成对新对象初始化.
特点:
1. 没有返回值.
2. 在创建一个新的对象时,系统会自动调用该类的构造方法完成对新对角的初始化.
语法:
php5: 修饰符 function __construct()
{
//code
}
php4: 修饰符 function 类名()
{
//code
}
注意:
1. php5里对两者都支持,如果两种构造方法同时存在的话,优先选择第一种.
2. 一个类里面默认有一个不带参数为空的构造方法,一旦自定义了一个构造方法,就会覆盖默认的构造方法.
所以说一个类有且只有一个构造方法.
3.一个类只能有一个构造方法.(不能重载)
4.构造方法默认的访问修饰符为public.
二.this关键字
this代表当前对象.可以理解为:谁调用它,它就代表谁.
注意事项:
this不在类定义的使用,只能在类定义的方法中使用.
三.实例
复制代码 代码如下:
<?php
header("Conter-Type:text/html;charset=utf-8");
class Person
{
public $name; //成员变量
public $age;
// function __construct()
//{
// echo "不带参数的构造方法";
//}
function __construct($name,$age)
{
$this -> name = $name;
$this -> age = $age;
echo "带参数的构造方法"."<br />";
}
//成员方法
function view()
{
//this的引用.
echo "姓名:".$this ->name.", 年龄:".$this ->age;
}
}
//new一个新的对象
//$p = new Person();
$p2 = new Person("李四",13);
$p2 ->view();
?>
结果如下:
带参数的构造方法
复制代码 代码如下:
<SPAN style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; FONT: 14px 微软雅黑; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: #ff00ff; WORD-SPACING: 0px" color="#ff00ff"> 姓名:李四, 年龄:13</SPAN>
四:析构方法:
析构方法是PHP5引入的新概念.主要作用:释放资源(比如:释放数据库链接,图片资源...).
语法:
function __destruct(){}
特点:
1.析构方法没有返回值.
2.主要作用是释放资源.并不是销毁对象本身.
3.在销毁对象前,系统自动调用该类的析构方法.
4.一个类最多只有一个析构方法.
五:例子:
复制代码 代码如下:
<?php
header("Conter-Type:text/html;charset=utf-8");
class Person
{
public $name;
public $age;
//构造方法
function __construct($name,$age)
{
$this ->name = $name;
$this ->age = $age;
}
//析构方法
function __destruct()
{
echo "姓名:".$this->name.", 年龄".$this->age."-->销毁<br />";
}
}
$p1= new Person("小一",18);
$p2= new Person("小二",17);
?>
结果:
姓名:小二, 年龄17-->销毁
姓名:小一, 年龄18-->销毁
分析结论:
1.析构方法会自动调用.
2.析构方法调用的顺序是先创建的对象后被销毁.
3.当一个对象没有引用,被垃圾回收机制确认为垃圾时,调用析构方法.