PHP 构造方法 __construct()

 分类:

php应用(63) 

目录(?)[+]

PHP 构造方法 __construct()

PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法。

构造方法

构造方法是类中的一个特殊方法。当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须是 __construct() 。

在一个类中只能声明一个构造方法,而且只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。该方法无返回值。

语法:

function __construct(arg1,arg2,...)
{
    ......
}

例子:

<?php
class Person {
    var $name;
    var $age;

    //定义一个构造方法初始化赋值
    function __construct($name,  $age) {
        $this->name=$name;
        $this->age=$age;
    }

    function say() {
        echo "我的名字叫:".$this->name."<br />";
	echo "我的年龄是:".$this->age;
    }
}

$p1=new Person("张三", 20);
$p1->say();
?>

运行该例子,输出:

我的名字叫:张三
的年龄是:20

在该例子中,通过构造方法对对象属性进行初始化赋值。

提示

php 不会在本类的构造方法中再自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。

PHP 析构方法 __destruct()

PHP 析构方法 __destruct() 允许在销毁一个类之前执行执行析构方法。

析构方法

与构造方法对应的就是析构方法,析构方法允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件、释放结果集等。析构函数不能带有任何参数,其名称必须是 __destruct() 。

语法:

function __destruct()
{
    ......
}

我们在上面的例子中加入下面的析构方法:

//定义一个析构方法
function __destruct()
{
    echo "再见".$this->name;
}

再次运行该例子,输出:

我的名字叫:张三
我的年龄是:20
再见张三

提示

  1. 和构造方法一样,PHP 不会在本类中自动的调用父类的析构方法。要执行父类的析构方法,必须在子类的析构方法体中手动调用 parent::__destruct() 。
  2. 试图在析构函数中抛出一个异常会导致致命错误。
  3. 在 PHP4 版本中,构造方法的名称必须与类名相同,且没有析构方法。
时间: 2024-10-09 23:08:44

PHP 构造方法 __construct()的相关文章

php面向对象编程之构造方法__construct()

php中构造方法是对象创建完成后第一个被对象自动调用的方法.在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法. 构造方法的作用 通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值. 构造方法的在类中的声明格式 function __constrct([参数列表]){ 方法体//通常用来对成员属性进行初始化赋值 } 在类中声明构造方法需要注意的事项 1.在同一个类中只能声明一个构造方法,原因是,PHP不支持构造函数重

php构造方法与析构方法

1. 构造方法 <?php //构造方法 __construct() 是在实例化对象时被自动调用 //用途:可以用于初始化程序(可以给成员属性赋值,也可以调用成员方法) //语法:[修饰符] function __construct(参数列表...){ } // 构造方法方法格式: // [修饰符] function __construct([参数]){ // 程序体 // } class person{ public $name; public $age; public $sex; publi

ThinkPHP实现登录限制时__construct和_initialize的区别

ThinkPHP支持两种构造方法:  __construct和_initialize(ThinkPHP内置的构造方法). 测试URL为:  http://oa.com/index.php/Admin/User/add 修改用户控制器类文件UserController.class.php 如下: 1.__construct构造方法 修改中间控制器类CommonController.class.php 如下: 说明:empty() 5.5 版本之后支持表达式,否则会报如下错误: 运行结果如下: 中间

PHP中的常用关键字

PHP中常用的关键字:final .static.const.... final : 1.final不能修饰成员属性 2.final只能修饰类和方法 final作用: 1.使用final修饰的类不能被子类继续 2.使用final修饰的方法不能被子类去覆盖 3.用来限制类不被继承,方法不被覆盖就使用final static: 1.使用static可以修饰成员的属性和成员的方法,不能修饰类 2.使用static修饰的成员属性,可以被同一个类的所有对象共享 3.静态的数据是存在内存中的 数据段 中(初

20150109--面向对象+对象传值-00

魔术方法 魔术方法也是一种方法,是一种在类内部定义的方法.魔术方法会在某个特定的情况下自动的被对象调用. 构造方法 构造方法就是对象在实例化之后会自动调用的方法. 语法:__construct() 构造方法的意义:给对象的属性进行初始化 兼容性构造方法 在低版本中没有构造方法__construct(),与其他语言一样,构造方法的名字与类名一致 兼容构造方法处理方式 析构方法 析构方法:对象被销毁的时候(销毁前),会自动调用的方法 语法:__destruct() 析构方法的意义:往往是为了释放内存

PHP 类与对象 全解析( 一)

目录 PHP 类与对象 全解析( 一) PHP 类与对象 全解析( 二) PHP 类与对象 全解析(三 ) 1.类与对象 对象:实际存在该类事物中每个实物的个体.$a =new User(); 实例化后的$a引用:php的别名,两个不同的变量名字指向相同的内容 封装: 把对象的属性和方法组织在一个类(逻辑单元)里继承:以原有的类为基础,创建一个新类,从而代码复用的目的:多态:允许将子类类型的指针赋值给父类类型的指针.------------------------------------- 2.

(实用篇)浅谈PHP拦截器之__set()与__get()的理解与使用方法

"一般来说,总是把类的属性定义为private,这更符合现实的逻辑. 但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数"__get()"和"__set()"来获取和赋值其属性,以及检查属性的"__isset()"和删除属性的方法"__unset()". 我们为每个属性做了设置和获取的方法,在PHP5中给我们提供了专门为属性设置值和获取值的方法,"__set()"和&qu

一、PHP基础知识总结

date_default_timezone_set("Asia/Shanghai"); date_default_timezone_set("PRC");//设置时区 PRC 中华人民共和国 Eclipse快捷键: alt+shift+r:重命名 ctrl-/:对一行或多行注释或取消注释 ctrl+o:快速outline ctrl+shift+r:打开资源 屏蔽警告:error_reporting(E_ALL & ~E_NOTICE);// ~ 除了 “se

PHP学习笔记——10.魔术方法

1.定义 是指在某些特定情况下会自动调用的方法 PHP提供了多个魔术方法,都是以__开头的 2.构造方法 __construct 当实例化对象时,会自动调用该方法 可用于在实例化对象时传参,以控制类的属性 class 类名 { private 属性名 = null; public function __construct ($形参) { $this -> 属性名 = $形参; } } $对象 = new 类名('实参'); echo $对象 -> 属性名; 3.析构方法 __destruct