PHP面向对象之魔术方法复习

魔术方法复习

2014-9-2 10:08:00 NotePad++ By jiancaigege 飞鸿影~
=========================

1、__construct()
构造方法
用于类实例化时自动运行的方法
常用于初始化成员属性值等

2、__destruct()
析构函数
用于类销毁时自动运行的方法
常用语销毁资源、关闭资源等

3、__set($param,$value)
用于给对象中非公有的成员属性设置值时自动调用的方法
例如:

1 public function __set($param,$value){
2 $this->$param=$value;
3 }

4、__get($param)
用于获取对象中非公有的成员属性值时自动调用的方法
例如:

1 public function __get($param){
2 return $this->$param;
3 }

5、__isset()
用于测试对象中非公有属性值时自动调用的方法

6、__unset()
用于销毁对象中非公有属性值时自动调用的方法

7、__toString()
当试图直接echo对象时自动调用的方法
示例:

1 public function __toString(){
2 echo "这是一个测试类.";
3 }

8、__call()
当试图调用对象中不存在的方法时自动调用的方法
示例:

1 public function __call($funname,$args){
2 echo "您调用的方法{$funname}不存在.参数为数组{$args}";
3 }

9、__clone()
在克隆对象时,对象里有子对象或资源时,此时需要加上这个方法,否则会复制不完整
当然,我们也可以在该方法中添加trigger_error(‘error‘,E_USER_ERROR);或者直接设置为private防止克隆

10、__sleep()
对象串行化(serialize)时,如果类中有子对象或资源被调用;
这时候我们需要使用该方法来进行提交未提交的数据,或类似的清理操作;
例如保存数据、关闭一些资源等
示例:(串行化时保存连接数据库需要的数据)

 1 private function connect ()
 2 {
 3 $this -> link = mysql_connect ( $this -> server , $this -> username , $this -> password );
 4 mysql_select_db ( $this -> db , $this -> link );
 5 }
 6
 7 public function __sleep ()
 8 {
 9 return array( ‘host‘ , ‘username‘ , ‘password‘ , ‘db‘ );
10 }

11、__wakeup()
对象反串行化(unserialize)时,恢复串行化前的一些状态,例如重新建立数据库连接,或执行其它初始化操作
示例:(上例中,我们需要自动恢复数据库连接)

1 public function __wakeup ()
2 {
3 $this -> connect ();
4 }

12、__autoload(string $class_name)
用于自动加载需要的类文件
注意:该方法用于类之外
示例:

 1 function __autoload($classname){
 2 $name=$classname.".class.php";
 3 if(file_exists($name)){
 4 require($name);
 5 echo "**自动加载了<font color=‘red‘>".$name."</font>类<br>";
 6 }else{
 7 die("<font color=‘red‘>".$name."</font>类不存在!");
 8 }
 9 }
10
11 $m=new DbMysql("stu");//此时会自动加载当前目录中DbMysql.class.php以及DbMysql.class.php引用或继承的父类文件
12 //$m=new DbMysqli("stu");//此时会自动加载当前目录中DbMysqli.class.php
13 //$m=new DbSqlite("stu");//此时会自动加载当前目录中DbSqlite.class.php
时间: 2024-10-24 10:42:13

PHP面向对象之魔术方法复习的相关文章

对php面向对象中魔术方法的认识

<?php//header(charset="utf8");    //echo 'hey 这里是描述我对php 面向对象中各种魔术方法的认识.';/* *魔术方法是在一些特定情况下会自动调用的一些php系统自定义函数 *这些函数都很有个性,他们统一以__两个 _ (下划线)开头. * 下面对于php 中这些常用的魔术方法一些个人认识. **/class demo {    public $name;    public $age; //当实例化这个类,首先会自动调用的方法 __

面向对象之魔术方法

魔术方法是一种特殊的系统定义的函数方法,写在我们自定义的类中,不需要我们去调用,满足条件后自动调用.PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法.所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀.魔术方法现有15种,__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toStri

PHP面向对象的魔术方法

<?php/** * Created by PhpStorm. * User: fu * Date: 2017/7/19 * Time: 9:41 */ class Person{ protected $name; private $age; private $mobile; function __construct($name, $age) { $this->name = $name; $this->age = $age; } /** * 测试使用的不能直接访问的函数 * @param

面向对象进阶---魔术方法

内置方法 双下方法 魔术方法: 都是python的对象内部自带的 并且都不需要我们自己去调用它 1.  __str__  __repr__:改变对象的字符串显示   输出的类型为str class Course: def __init__(self, name, price, period): self.name = name self.price = price self.period = period def __repr__(self): # 备胎 return '%s,%s,%s' %

[麦先生]PHP面向对象中常见的魔术方法以及关键字

麦先生引言:在学习php面向对象的编程思想中,我们会遇到很多的能够自动调用的魔术方法,每个魔术方法都有其特定的触发场景,但其根本目的是在于编写和实际使用过程中阻止程序报错而生; 常见的魔术方法有:music=> gusic(根据首字母拼音大写由gusic联想到music)    以及构造,析构方法,以及特殊的关键字fsci -- cats 和 ai 魔术方法                触发场景 <!--gusic---------------------------------------

前端学PHP之面向对象系列第二篇——魔术方法

显示目录 目录 [1]构造方法 [2]析构方法 [3]不可访问属性[4]对象复制[5]字符串[6]对象不存在[7]自动加载类[8]串行化[9]函数调用 前面的话 php在面向对象部分有很多相关的魔术方法,这些方法为面向对象实现提供了便利,本文将详细介绍魔术方法 构造方法 大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,通常用它执行一些有用的初始化任务 构造函数的声明与其它操作的声明一样,只是其名称必须是两个下划线__construct( ).这是PHP5中的变化:

php面向对象类中常用的魔术方法

php面向对象类中常用的魔术方法 1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct() class construct{ public function __construct(){ $this->var = "this is var"; } } class con2 extends construct{ public function __construct(){ $

PHP面向对象常见的关键字和魔术方法

在PHP5的面向对象程序设计中提供了一些常见的关键字,用来修饰类.成员属性或成员方法,使他们具有特定的功能,例如final.static.const等关键字.还有一些比较实用的魔术方法,用来提高类或对象的应用能力,例如__call().__toString().__autoload等. ①final关键字的应用 final关键字的作用如下:a.实用final标识的类,不能被继承.b.在类中使用final标识的成员方法,在子类中不能被覆盖. 在下面的例子中声明一个MyClass类,并使用final

面向对象中所有的魔术方法和关键字

魔术方法构造函数,对类里面成员进行初始化function __construct(){}析构函数,在对象释放的时候自动执行function __destruct(){} __set方法function __set($name,$value){}                                                          __set和__get  主要用在封装里面__get方法function __get($name){} __tostring()方法