程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP Class類與對象學習筆記

PHP Class類與對象學習筆記

編輯:關於PHP編程

在學習中寫到的一個PHP Class類與對象學習筆記,下面與各位朋友分享,希望此教程對各位學習類與對象有所幫助。

個人做的筆記.....用於借鑒,如有錯請指出,謝謝

 代碼如下 復制代碼

<?php
/*******************************************

   Class 對象實例說明( 普通類 )

*******************************************/
 class ClassDemo{
  public $PublicVar;
 
  private $PrivateVar;//私有變量 外部不能調用
 
  protected $ProtectedVar;//受保護變量 外部與子類不可訪問
 
  public static $StaticVar=0;//static 靜態變量 靜態方法 不能訪問非靜態方法與變量,非靜態方法與變量可以訪問靜太方法與變量
 
  const constVar='';//當你有一個屬性,不希望被修改,則考慮使用const 做成常量,使用 類名::常量名; 接口名::常量
  /*
    1.常量在定義的時候需要賦初值
    2.常量不能修改.
    3.常量名不能有 $, 一般是大寫, 默認是public
    4.常量在類的內部使用 self::常量的名稱 類名::常量的名稱
  */
  public function __construct( /*$name*/ ){//這個可以帶參數,帶了參數之後必創建時必須也帶有參數,不然會出錯
   //$this->PublicVar=$name;
   //self::$StaticVar++;//靜態變量內部訪問方法  外部訪問方法 對象名::變量名( ClassDemo::$StaticVar )
   $this->PublicVar='$PublicVar';
   $this->PrivateVar='$PrivateVar';
   $this->ProtectedVar='$ProtectedVar';
   self::$StaticVar++;
   echo "ClassDemo __construct<br />";
   }
  
  public function __destruct(){//析構函數
   }
  final public function fun(){
   /*
    final 關鍵字( PHP5 中出現 )
    希望方法不被其它的類繼承時間覆蓋, 可以使用final
   
    當這個關鍵字用來修飾類的時候,那麼這個類將不可被其它類給繼承(可以實例化)
   
    注:此關鍵字不能用於修飾變量

   */
   }
  }//End Class
/*******************************************

   Class 對象實例說明( 抽象類 )

*******************************************/
 abstract class AbstractDemo{
  /***************************************
 
   1.抽象類不能被實例化
  
   2.抽象類不一定要包含abstract方法。
     也就是說抽象類可以沒有abstract方法
    
   3.一旦包含了abstract方法,則這個類必須
     聲明為abstract
  
   4.抽象類不能有函數體
  
   5.如果一個類繼續了某個抽象類,則他必須實現
     該抽象類的所有抽象方法。(除非它自己也聲明為抽象類)
    
  ***************************************/
  }

/*******************************************

   Class 對象實例說明( 繼承類 )

*******************************************/
 class DemoTwo extends ClassDemo{
 
  }
/*******************************************

   Class 對象實例說明( 接口 )

*******************************************/
 interface Face{
  /*********************************
  1.當一個類實現了 某個接口,則要求該類必須實現這個接口的所有方法
  2.接口的方法都不能有方法體
  3.不能去實例化一個接口
  4.接口中可以有屬性,但是必須是常量,並且是public

  什麼情況下使用接口
 
   1.定規范
   2.定下規范,讓別的程序員來實現,比如:

  **********************************/
  public function Name();
 
  }
 
 interface Face2 extends Face{
  /*******************************
 
   繼承接口
   繼承接口時候不用去實現父接口的方法
 
  ********************************/
 
  const namevar=20;
 
  }
 
 class Demo implements Face2{
  /**********************************
 
   實現接口,可以同時實現多個接口
   當一個類去實現了某些接口,則必須把所有接口的方法,都實現
  
  **********************************/
 
  public $Name1=0;
 
  public function Name(){
  
   echo Face2::namevar;
  
   }
 
  }

?>

小結

在類內部訪問靜態成員屬性或者方法,使用 self::(注意不是 $slef),如:

 代碼如下 復制代碼

slef:: $country
slef:: myCountry()

在子類訪問父類靜態成員屬性或方法,使用 parent::(注意不是 $parent),如:

 代碼如下 復制代碼

parent:: $country
parent:: myCountry()

外部訪問靜態成員屬性和方法為 類名/子類名:: ,如:

 代碼如下 復制代碼

Person::$country
Person::myCountry()
Student::$country

但靜態方法也可以通過普通對象的方式訪問。


•類/對象 函數

•__autoload — 嘗試加載未定義的類
•call_user_method_array — 調用一個用戶方法,同時傳遞參數數組(已廢棄)
•call_user_method — 對特定對象調用用戶方法(已廢棄)
•class_alias — 為一個類創建別名
•class_exists — 檢查類是否已定義
•get_called_class — 後期靜態綁定("Late Static Binding")類的名稱
•get_class_methods — 返回由類的方法名組成的數組
•get_class_vars — 返回由類的默認屬性組成的數組
•get_class — 返回對象的類名
•get_declared_classes — 返回由已定義類的名字所組成的數組
•get_declared_interfaces — 返回一個數組包含所有已聲明的接口
•get_declared_traits — 返回所有已定義的 traits 的數組
•get_object_vars — 返回由對象屬性組成的關聯數組
•get_parent_class — 返回對象或類的父類名
•interface_exists — 檢查接口是否已被定義
•is_a — 如果對象屬於該類或該類是此對象的父類則返回 TRUE
•is_subclass_of — 如果此對象是該類的子類,則返回 TRUE
•method_exists — 檢查類的方法是否存在
•property_exists — 檢查對象或類是否具有該屬性
•trait_exists — 檢查指定的 trait 是否存在

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved