1. 建立类
class MyPc { var $key; // 建议使用public,而不是var public $name; public function vod() { echo "PHP 100 视频教程"; } } // 输出PHP 100 视频教程 $pc1 = new MyPc(); $pc1->vod();
2. 对象中的$this关键字、__construct()构造函数和析构函数__destruct()
PHP4 的时候使用function MyPc() 进行初始化
class MyPc { public $name; function __construct($name) { $this->name = $name; } public function vod() { //echo "PHP 100 视频教程"; echo $this->name; } // 规则:后进先出:先释放后建立的对象 // 垃圾回收机制 function __destruct() { // ... } } // 输出PHP 100 视频教程 $pc1 = new MyPc("PHP 100 视频教程"); $pc1->vod();
3. 类的封装和应用
封装关键字:public, protected, private
封装相关函数:
private $name; function __set($name, $value) { $this->$name = $value; } function __get($name) { } // 赋值 $pc1->name = "sss"; // 取值 echo $pc1->name;
4. 类的继承和应用
继承关键字:extends
重载:
class Root { function dayin() { return "Root print <br>"; } } class Son extends Root { function dayin() { // 重载dayin()函数 return Root::dayin()."Son print<br>"; } } // 输出Root print // Son print $p = new Son(); echo $p->dayin();
5. 类的抽象方法和类
一个类中至少有一个 方法是抽象的
不可实例化 ,只能用它的继承类来实例化
抽象方法不允许有{}
抽象关键字:abstract
abstract class cl1{ abstract function fun1(); } class cl2 extends cl1 { function fun1() { echo "第一个"; } }
6. 类中常用关键字
关键字:final
当定义类 的时候该类将不能被继承 ,当用来定义方法 的时候该方法将不能被重载
关键字:self
关键字:static
关键字:const
用来定义类中的常量,类似PHP外部定义常量 的关键字define()
const只能修饰类当中的成员属性
建议大写 常量
常量不使用$ 符号
final class MyPc { // 静态属性 static $name = "我的电脑"; // 常量 const USER = "我的"; final function power() { echo self::$name."电脑开机中......"."<br>"; echo self::USER; } } $p = new MyPc(); $p->power(); // 直接访问静态属性 echo MyPc::$name;
7. 类中接口的应用
先 继承后 接口,单 继承多 接口
关键字:interface、implements
抽象类:
1、类中至少有一个抽象方法
2、抽象方法前需加abstract
接口:
1、类中全部为抽象方法
2、抽象方法前不用加abstract
3、接口抽象方法属性为public
4、成员属性必须为常量
共同点:
1、本身都不能被实例化,必须被继承或者引用
2、继承或者引用后,需要把所有抽象方法重载方可使用
interface demo { const NAME = "名称"; function fun1(); } interface demo2 { function fun2(); } class mypc implements demo, demo2 { function fun1() { echo "======"; } function fun2() { echo "======"; } }
8. 类中多态的应用
instanceof 用来测定一个给定的对象是否来自 指定的对象类
class A {} class B {} $thing = new A; if ($thing instanceof A) { echo 'A'; } if ($thing instanceof B) { echo 'B'; }
9. 总结篇
对象描述的配置 :__tostring()
class My { function __tostring() { echo "test"; } } $p = new My(); echo $p;
对象方法的异常处理 :__call($funname, $arr_value)
// 调用一些不存在的对象方法的异常处理,使程序继续正常运行 class My { function __call($n, $v) { echo "错误的方法名".$n; echo "错误的参数".print_r($v); } }
克隆对象的应用 :__clone()
class My { function __clone() { echo "克隆时自动调用的函数"; } } $a = new My(); $b = clone $a;
自动载入对象的方法 :__autoload()
// 快速取得对象名称并自动载入进当前页面 function __autoload($class_n) { // include("mypc.php"); include($class_n.".php"); } $p = new Mypc(); $d = new demo();