打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
简单介绍PHP面向对象

面向对象编程的三特点: 封装性,继承性(PHP支持单继承),多态性
PHP的一个类必须在一段代码段中,即一个“”

  1. class PhpClass{  

  2.     public $name;  

  3.     public function toString(){  

  4.         return 'PhpClass';  

  5.     }  


定义成员方法:  [关键词] function 方法名(){...}

访问成员方法:  对象名->成员方法

定义成员变量:  [关键字] 成员变量名

访问成员变量:  对象名->成员变量

关键字可以使用 public、private、protected、static和final中的任意一个

定义类常量:      const 常量名
访问类常量:      类名::常量名

  1.     public $name;  

  2.     const PI = 3.1415926;   // 不能有修饰词  

  3.     public function toString(){  

  4.         return 'PhpClass';  

  5.     }  

  6.     public function printPI(){  

  7.         echo PhpClass::PI.'
    '
    ;  // 直接通过类名访问  

  8.     }  

  9.     public function printName(){  

  10.         echo $this->name;   // 注意此处的写法  

  11.     }  

  12. }  

  13. $lycClass = new PhpClass();  

  14. echo $lycClass::PI.'
    '
    // 通过对象访问  

  15. echo PhpClass::PI.'
    '
    ;  

  16. echo $lycClass->toString().'
    '
    ;  

  17. $lycClass->name = 'Lyc';  

  18. $lycClass->printName(); 

构造方法和析构方法:

构造方法: 不写会默认一个

void __construct([mixed args [,...]]) 下划线为两个

析构方法: 

void __destruct(void) 下划线为两个

php使用垃圾回收机制,不用 unset 函数析构方法也会自动被调用

  1. class PhpClass{  

  2.     public $name;  

  3.     //public function __construct(){} PHP不支持 C++、java 形式上的方法重载  

  4.   

  5.     public function __construct($name){  

  6.         $this->name = $name;  

  7.     }  

  8.     public function __destruct(){  

  9.         echo '析构一下...';  

  10.     }  

  11. }  

  12. $lycClass = new PhpClass('lyc');  

  13. echo $lycClass->name;  

  14. //unset($lycClass); 不写也会调用 __destruct()

继承和多态

继承: 在PHP中子类可以继承父类的所有public和protected修饰的成员变量和方法,包括构造方法。

声明继承的格式: 

class subClass extendes superClass{

......

}

多态:(覆盖和重载两种,覆盖和c++、java中重写相同)

重载概念和c++、java中的重载概念相同,但实现方式不同,重载实例:

  1. class PhpClass{  

  2.     public $nae;  

  3.     // PHP中有很多以两个下划线开头的方法,被称为魔术方法***********************  

  4.     /* __call()方法的作用是: 当程序试图调用不存在或不可见的成员方法时 

  5.      * PHP会先调用__call()方法来存储方法名及其参数。__call()方法包含 

  6.      * 两个参数,即方法名和方法参数。其中,方法参数是以数组形式存在的  */  

  7.     function __call($name$arguments){  

  8.         // 通过count($arguments)获得参数个数  

  9.         $argNum = count($arguments);  

  10.         //echo $argNum.'***************
    ';
      

  11.         if($name == 'right'){   // 一下方法调用中的 $this-> 不可省略  

  12.             switch($argNum){  

  13.                 case 0:  

  14.                     $this->right0();  

  15.                     break;  

  16.                 case 1:  

  17.                     $this->right1($arguments[0]);  

  18.                     break;  

  19.                 case 2:  

  20.                     $this->right2($arguments[0],$arguments[1]);  

  21.                     break;  

  22.                 default:  

  23.                     echo '参数可能多了,我不干了...
    '
    ;  

  24.             }  

  25.         }else if($name == 'left'){  

  26.             switch($argNum){  

  27.                 case 1:  

  28.                     $this->left1($arguments[0]);  

  29.                     break;  

  30.                 case 2:  

  31.                     $this->left2($arguments[0],$arguments[1]);  

  32.                     break;  

  33.                 default:  

  34.                     echo '参数不对,我不干了...
    '
    ;  

  35.             }  

  36.         }else{  

  37.             echo '什么也不做...';  

  38.         }  

  39.     }  

  40.     //几种实现重载的方法,方法名不相同  

  41.     public function right0(){  

  42.         echo 'right0
    '
    ;  

  43.     }  

  44.     public function right1($arg){  

  45.         echo 'right1 '.$arg.'
    '
    ;  

  46.     }  

  47.     public function right2($arg1,$arg2){  

  48.         echo 'right1 '.$arg1.' '.$arg2.'
    '
    ;  

  49.     }  

  50.     public function left0(){  

  51.         echo 'left0
    '
    ;  

  52.     }  

  53.     public function left1($arg){  

  54.         echo 'left1 '.$arg.'
    '
    ;  

  55.     }  

  56.     public function left2($arg1,$arg2){  

  57.         echo 'left1 '.$arg1.' '.$arg2.'
    '
    ;  

  58.     }  

  59. }  

  60. $lyc = new PhpClass();  

  61. $lyc->left();           // 此处实现重载  

  62. $lyc->left('LEFT');  

  63. $lyc->left('LEFT','LYC');  

  64. $lyc->right();  

  65. $lyc->right('RIGHT');  

  66. $lyc->right(123,'LYC');  

  67. $lyc->right(123,'lyc','right'); 


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
CTFWEB-反序列化篇
构造函数以及析构函数在PHP中需要注意的地方
php 函数传值,传址,函数参数
【PHP+MySQL】投票系统的设计和实现
深入浅出PHP(Exploring PHP)
VM Bridge FAQ
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服