PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
在php中内置了一些特书的方法,这些特殊方法被称之为魔术方法,其也有特殊的命名规则,以“__”双下划线开头的方法和函数名,所以我们自定义的函数不应该用双下划下开头,目的是为了区分魔术方法。
__construct(), __autoload(),__destruct(), __call(), __callStatic(), __get()
, __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被称为魔术方法(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。
construct翻译:建造、组成等,所以__construct()称为构造函数,如果是在PHP5之前的版本(php3、php4)中, 所谓的构造函数是和与其所在类同名的函数,所以在PHP5中也是支持和php3、php4中同样的用法,但是推荐使用__construct()作为类的构造函数,好处就是构造函数不需要随着类名的改变而做出改变,然而在PHP7.*中已经废弃PHP3、PHP4中的用法,构造函数必须使用__construct()来定义。
那构造函数是如何执行的呢?当一个对象被创建的时侯,类中的构造函数是被自动调用的第一个函数,而且一个类中只能存在一个构造函数,与普通函数类似,构造函数同样可以带有参数,如果构造函数带有参数,那在实例化同样需要传入相应的参数,如new Person($name, $sex)。
如何定义构造函数的语法,如下:
public function __construct($arg,$arg,$arg,$arg,......){
//代码块
}
其中$arg,$arg,$arg,$arg,......为参数列表,不需要参数的时候可以省略。
假如你在类中没有显式地声明构造函数,类中会默认存在一个没有参数列表并且内容为空的构造函数,如果显式地声明构造函数,则类中的默认构造方法将不会存在,构造函数用来做初始化工作,类如为某些参数赋值等。当显式地声明构造函数,其访问权限必须是public,而且构造函数是在实例化时自动调用的,无需手动调用。
<?php
class Person{
public $name, $age, $sex;
public function __construct($arga, $argb, $argc){
$this -> name = $arga;
$this -> age = $argb;
$this -> sex = $argc;
$this -> show_infor();
}
public function show_infor(){
echo '姓名:'.$this -> name.'<br>';
echo '年龄:'.$this -> age.'岁。<br>';
echo '性别:'.$this -> sex.'<br>';
}
}
$object = new Person('小明', 22, '男');
//输出
//姓名:小明
//年龄:22岁
//性别:男
?>
从上面案例中看出,实例化(new)的时候,就自动调用了__construct()构造函数。
转载注明:
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论