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

PHP新手之學習類與對象(1)

編輯:關於PHP編程

PHP 5 引入了新的對象模型(Object Model)。完全重寫了 PHP 處理對象的方式,允許更佳性能和更多特性。

一、基本概念

1、class

每個類的定義都以關鍵字 class 開頭,後面跟著類名,可以是任何非 PHP 保留字的名字。後面跟著一對花括號,裡面包含有類成員和方法的定義。偽變量 $this 可以在當一個方法在對象內部調用時使用。$this 是一個到調用對象(通常是方法所屬於的對象,但也可以是另一個對象,如果該方法是從第二個對象內靜態調用的話)的引用。看下面例子:

Example#1 面向對象語言中的 $this 變量

  1. <?php  
  2. class A  
  3. {  
  4. function foo()  
  5. {  
  6. if (isset($this)) {  
  7. echo '$this is defined (';  
  8. echo get_class($this);  
  9. echo ")n";  
  10. } else {  
  11. echo "$this is not defined.n";  
  12. }  
  13. }  
  14. }  
  15. class B  
  16. {  
  17. function bar()  
  18. {  
  19. A::foo();  
  20. }  
  21. }  
  22. $a = new A();  
  23. $a->foo();  
  24. A::foo();  
  25. $b = new B();  
  26. $b->bar();  
  27. B::bar();  
  28. ?> 

上例將輸出:

  1. $this is defined (a)  
  2. $this is not defined.  
  3. $this is defined (b)  
  4. $this is not defined. 

Example#2 簡單的類定義

  1. <?php  
  2. class SimpleClass  
  3. {  
  4. // 成員聲明  
  5. public $var = 'a default value';  
  6. // 方法聲明  
  7. public function displayVar() {  
  8. echo $this->var;  
  9. }  
  10. }  
  11. ?> 

Example#3 類成員的默認值

  1. <?php  
  2. class SimpleClass  
  3. {  
  4. // 無效的類成員定義:  
  5. public $var1 = 'hello '.'world';  
  6. public $var2 = <<<EOD  
  7. hello world  
  8. EOD;  
  9. public $var3 = 1+2;  
  10. public $var4 = self::myStaticMethod();  
  11. public $var5 = $myVar;  
  12. // 正確的類成員定義:  
  13. public $var6 = myConstant;  
  14. public $var7 = self::classConstant;  
  15. public $var8 = array(true, false);  
  16. }  
  17. ?> 

2、new

要創建一個對象的實例,必須創建一個新對象並將其賦給一個變量。當創建新對象時該對象總是被賦值,除非該對象定義了構造函數並且在出錯時拋出了一個異常。

Example#4 創建一個實例

  1. <?php  
  2. $instance = new SimpleClass();  
  3. ?> 

復制代碼當把一個對象已經創建的實例賦給一個新變量時,新變量會訪問同一個實例,就和用該對象賦值一樣。此行為和給函數傳遞入實例時一樣。可以用克隆給一個已創建的對象建立一個新實例。

Example#5 對象賦值

  1. <?php  
  2. $assigned   =  $instance;  
  3. $reference  =& $instance;  
  4. $instance->var = '$assigned will have this value';  
  5. $instance = null; // $instance and $reference become null  
  6. var_dump($instance);  
  7. var_dump($reference);  
  8. var_dump($assigned);  
  9. ?> 

復制代碼上例將輸出:

  1. NULL  
  2. NULL  
  3. object(SimpleClass)#1 (1) {  
  4. ["var"]=> 
  5. string(30) "$assigned will have this value"  

3、extends

一個類可以在聲明中用 extends 關鍵字繼承另一個類的方法和成員。不能擴展多個類,只能繼承一個基類。

被繼承的方法和成員可以通過用同樣的名字重新聲明被覆蓋,除非父類定義方法時使用了 final 關鍵字。可以通過 parent:: 來訪問被覆蓋的方法或成員。

Example#6 簡單的類繼承

  1. <?php  
  2. class ExtendClass extends SimpleClass  
  3. {  
  4. // Redefine the parent method  
  5. function displayVar()  
  6. {  
  7. echo "Extending classn";  
  8. parent::displayVar();  
  9. }  
  10. }  
  11. $extended = new ExtendClass();  
  12. $extended->displayVar();  
  13. ?> 

上例將輸出:

  1. Extending class  
  2. a default value 

1

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