PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀。 __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被称为"魔术方法"(Magic methods)。 在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。 我们暂可以理解为,魔术方法就是一种实例化之后,不需要手动调用就能够执行的方法。 __construct() 构造函数 PHP 5 允许开发者在一个类中定义一个方法作为构造函数。 具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。 <?php class name{ public $s1 = 0; public $s2 = 1; public function __construct(){ //构造函数 echo 123; //输出 } public function s1(){ $this->s2(); } public function s2(){ echo 's2'; } } $name = new name(); // ① 实例化类得到$name对象 ?> 浏览器输出效果: 实例化类的同时传参数 代码: <?php class name{ public $s1 = 0; public $s2 = 1; public function __construct( $a, $b ){ // ③ 构造方法定义、接收参数 var_dump( $a, $b ); //输出 } public function s1(){ $this->s2(); } public function s2(){ echo 's2'; } } $name = new name( 'a', 'b' ); // ② 实例化同时传递参数a与b ?> 浏览器输出效果: 传参后把结果赋给两个类属性 <?php class name{ public $s1 = 0; public $s2 = 1; public function __construct( $a, $b ){ $this->s1 = $a; // ④ 将上一行代码$a接收的值赋给s1属性 $this->s2 = $b; // ④ 将上一行代码$2接收的值赋给s2属性 } public function s1(){ // ⑥ 执行s1方法 $this->s2(); // ⑦ 通过this语法调用s2方法 } public function s2(){ echo $this->s1; // ⑧ 在s2内部输出s1属性 } } $name = new name( 'a', 'b' ); $name->s1(); // ⑤ 调用s1的方法 ?> 浏览器输出效果: 构造方法只是魔术方法的一种。 魔术方法都是在特定条件下能够自动执行的一种方法。 其它魔术方法大家可以参考官方手册:【PHP 手册】-【语言参考】-【类与对象】-【魔术方法】 更多分享 三小时学会 HTML 网页编辑 三小时学会 CSS 网页美化 PHP 网站开发 效率工具 小众电影 小程序开发 |
|