PHP 面向对象开发

来源:互联网 发布:银行家算法安全序列 编辑:程序博客网 时间:2024/05/31 19:32

1. 建立类

Php代码  收藏代码
  1. class MyPc {  
  2.     var $key;  
  3.     // 建议使用public,而不是var  
  4.     public $name;  
  5.       
  6.     public function vod() {  
  7.         echo "PHP 100 视频教程";  
  8.     }  
  9. }  
  10. // 输出PHP 100 视频教程  
  11. $pc1 = new MyPc();  
  12. $pc1->vod();  

 

2. 对象中的$this关键字、__construct()构造函数和析构函数__destruct() 
PHP4 的时候使用function MyPc() 进行初始化

 

Php代码  收藏代码
  1. class MyPc {  
  2.     public $name;  
  3.       
  4.     function __construct($name) {  
  5.         $this->name = $name;  
  6.     }  
  7.       
  8.     public function vod() {  
  9.         //echo "PHP 100 视频教程";  
  10.         echo $this->name;  
  11.     }  
  12.   
  13.     // 规则:后进先出:先释放后建立的对象  
  14.     // 垃圾回收机制  
  15.     function __destruct() {  
  16.         // ...  
  17.     }  
  18. }  
  19. // 输出PHP 100 视频教程  
  20. $pc1 = new MyPc("PHP 100 视频教程");  
  21. $pc1->vod();  

 
3. 类的封装和应用 
封装关键字:public, protected, private
封装相关函数:

Php代码  收藏代码
  1. private $name;  
  2. function __set($name$value) {  
  3.     $this->$name = $value;  
  4. }  
  5. function __get($name) {  
  6. }  
  7. // 赋值  
  8. $pc1->name = "sss";  
  9. // 取值  
  10. echo $pc1->name;  

 

4.  类的继承和应用 
继承关键字:extends
重载:

Php代码  收藏代码
  1. class Root {  
  2.     function dayin() {  
  3.         return "Root print <br>";  
  4.     }  
  5. }  
  6. class Son extends Root {  
  7.     function dayin() {  
  8.         // 重载dayin()函数  
  9.         return Root::dayin()."Son print<br>";  
  10.     }  
  11.   
  12.   
  13. }  
  14. // 输出Root print  
  15. //      Son print  
  16. $p = new Son();  
  17. echo $p->dayin();  

 

5. 类的抽象方法和类 
一个类中至少有一个 方法是抽象的
不可实例化 ,只能用它的继承类来实例化
抽象方法不允许有{} 
抽象关键字:abstract

Php代码  收藏代码
  1. abstract class cl1{  
  2.     abstract function fun1();  
  3. }  
  4. class cl2 extends cl1 {  
  5.     function fun1() {  
  6.         echo "第一个";  
  7.     }  
  8. }  

 

6. 类中常用关键字 
关键字:final 
当定义 的时候该类将不能被继承 ,当用来定义方法 的时候该方法将不能被重载 

关键字:self

  • 用来用类访问当前类中的内容的关键字,类似与$this 关键字,但$this是需要类实例化以后才可以使用,self 可以直接访问 当前类中的内部成员
  • self一般用来访问类中的:静态成员 ,常量 ,或者其他定义内容

关键字:static

  • 用来定义类的静态属性或方法,可以在类未被实例化 时使用,静态属性单独占用内存而不会因创建多个对象时而导致同样的方法或者属性重复占用。
  • 静态方法内部禁止出现非 静态内容
  • $this不能访问 静态属性

关键字:const 
用来定义类中的常量,类似PHP外部定义常量 的关键字define()

const只能修饰类当中的成员属性

建议大写 常量

常量不使用$ 符号

 

Php代码  收藏代码
  1. final class MyPc {  
  2.     // 静态属性  
  3.     static $name = "我的电脑";  
  4.     // 常量  
  5.     const USER = "我的";  
  6.     final function power() {  
  7.         echo self::$name."电脑开机中......"."<br>";  
  8.         echo self::USER;  
  9.     }  
  10. }  
  11. $p = new MyPc();  
  12. $p->power();  
  13. //  直接访问静态属性  
  14. echo MyPc::$name;  

 

7. 类中接口的应用 
 继承 接口, 继承 接口
关键字:interface、implements
抽象类: 
1、类中至少有一个抽象方法
2、抽象方法前需加abstract
接口: 
1、类中全部为抽象方法
2、抽象方法前不用加abstract
3、接口抽象方法属性为public
4、成员属性必须为常量
共同点: 
1、本身都不能被实例化,必须被继承或者引用
2、继承或者引用后,需要把所有抽象方法重载方可使用

Php代码  收藏代码
  1. interface demo {  
  2.     const NAME = "名称";  
  3.     function fun1();  
  4. }  
  5. interface demo2 {  
  6.     function fun2();  
  7. }  
  8. class mypc implements demo, demo2 {  
  9.     function fun1() {  
  10.         echo "======";  
  11.     }  
  12.     function fun2() {  
  13.         echo "======";  
  14.     }  
  15. }  

 

8. 类中多态的应用 
instanceof 用来测定一个给定的对象是否来自 指定的对象类

Php代码  收藏代码
  1. class A {}  
  2. class B {}  
  3. $thing = new A;  
  4. if ($thing instanceof A) {  
  5.     echo 'A';  
  6. }  
  7. if ($thing instanceof B) {  
  8.     echo 'B';  
  9. }  

 

9. 总结篇 
对象描述的配置 :__tostring()

Php代码  收藏代码
  1. class My {  
  2.     function __tostring() {  
  3.         echo "test";  
  4.     }  
  5. }  
  6. $p = new My();  
  7. echo $p;  

 

对象方法的异常处理 :__call($funname, $arr_value)

Php代码  收藏代码
  1. // 调用一些不存在的对象方法的异常处理,使程序继续正常运行  
  2. class My {  
  3.     function __call($n$v) {  
  4.         echo "错误的方法名".$n;  
  5.         echo "错误的参数".print_r($v);  
  6.     }  
  7. }  

 

克隆对象的应用 :__clone()

Php代码  收藏代码
  1. class My {  
  2.     function __clone() {  
  3.         echo "克隆时自动调用的函数";  
  4.     }  
  5. }  
  6. $a = new My();  
  7. $b = clone $a;  

 

自动载入对象的方法 :__autoload()

Php代码  收藏代码
  1. // 快速取得对象名称并自动载入进当前页面  
  2. function __autoload($class_n) {  
  3.     // include("mypc.php");  
  4.     include($class_n.".php");  
  5. }  
  6. $p = new Mypc();  
  7. $d = new demo();  
0 0