PHP的 Final關鍵字、類(檔案)的載入和命名空間

來源:互聯網
上載者:User

標籤:命名空間   autoload   解決   技術   全域   final   路徑   維護   代碼   

** Final、類(檔案)的載入和命名空間

1、final 關鍵字-----終態的、最終的

final 關鍵字用於修飾類和方法;修飾的類不能被繼承,修飾的函數方法(public)在子類中不能被重載。
如果父類中的方法被聲明為 final,則子類無法覆蓋該方法。如果一個類被聲明為 final,則不能被繼承。 

類使用 final 關鍵字的例子:
final class Person{
......
}
final 定義的類被繼承時會提示如下錯誤:
Fatal error: Class Student may not inherit from final class (Person) in ...
方法使用 final 關鍵字的例子:
class Person{
final function say(){
......
}
}

2、類的自動載入

PHP的類自動載入
__autoload:是直接寫在類的方法裡面。 

PHP的類的自動載入存在的原因:      

在PHP開發過程中,如果希望從外部引入一個class,通常會使用include和require方法,去把定義這個class的檔案包含進來。這個在小規模開發的時候,沒什麼大問題。但在大型的開發項目中,這麼做會產生大量的require或者include方法調用,這樣不因降低效率,而且使得代碼難以維護,況且require_once的代價很大。
PHP的類的自動載入的更新替換:
在PHP5後,當載入PHP類時,如果類所在檔案沒有被包含進來,或者類名出錯,Zend引擎會自動調用__autoload函數。此函數需要使用者自己實現__autoload函數。 在PHP5.1.2版本後,可以使用spl_autoload_register函數自訂自動載入處理函數。當沒有調用此函數,預設情況下會使用SPL自訂的spl_autoload函數。
我們可以看出_autoload至少要做三件事情,第一件事是根據類名確定類檔案名稱,第二件事是確定類檔案所在的磁碟路徑(在我們的例子是最簡單的情況,類與調用它們的PHP程式檔案在同一個檔案夾下),第三件事是將類從磁碟檔案中載入到系統中。第三步最簡單,只需要使用include/require即可。要實現第一步,第二步的功能,必須在開發時約定類名與磁碟檔案的映射方法,只有這樣我們才能根據類名找到它對應的磁碟檔案。 

3、命名空間

從廣義上來說,命名空間是一種封裝事物的方法
命名空間通過關鍵字namespace 來聲明。如果一個檔案中包含命名空間,它必須在其它所有代碼之前聲明命名空間,除了一個以外:declare關鍵字。
**命名空間下的某個類可以寫別名,目的是簡化代碼
命名空間的定義:命名空間是一個容器,這個容器主要是為了識別其下的類和函數。一旦定義了命名空間,它下面的代碼就屬於這個命名空間了,所以命名空間的定義要在代碼的最開始行。
對於同一個包來說,同一個命名空間或者子命名空間的代碼沒有必要在一個 PHP 檔案中定義,子命名空間下的代碼是為了完成特定模組的工作,組合起來就是一個包完整的命名空間。
假如編寫的代碼沒有定義命名空間,那說明它屬於全域的命名空間(\ 符號),所以能夠直接引用類或者函數(不用添加 \ 符號)。

在PHP中,命名空間用來解決在編寫類庫或應用程式時建立可重用的代碼如類或函數時碰到的兩類問題: 
1.  使用者編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字衝突。  
2.  為很長的標識符名稱(通常是為了緩解第一類問題而定義的)建立一個別名(或簡短)的名稱,提高原始碼的可讀性。  
PHP 命名空間提供了一種將相關的類、函數和常量組合到一起的途徑。
Note: 名為PHP或php的命名空間,以及以這些名字開頭的命名空間(例如PHP\Classes)被保留用作語言核心使用,而不應該在使用者空間的代碼中使用。

舉例:

PHP的 Final關鍵字、類(檔案)的載入和命名空間

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.