PHP 類與對象 全解析方法

來源:互聯網
上載者:User

標籤:view   關閉   檔案   rate   對象   操作   config   載入   開發   

1.類與對象

對象:實際存在該類事物中每個實物的個體。$a =new User(); 執行個體化後的$a

引用?php的別名,兩個不同的變數名字指向相同的內容

封裝: 把對象的屬性和方法組織在一個類(邏輯單元)裡

繼承:以原有的類為基礎,建立一個新類,從而代碼複用的目的;

多態:允許將子類類型的指標賦值給父類類型的指標。

-------------------------------------

2.自動載入對象:

自動載入通過定義特殊的__autoload函數,當引用沒有在指令碼中定義的類時會自動調用這個函數.

1 [php] view plaincopyprint?

2 function __autoload($class){

3 require_once("classes/$class.class.php");

4 }

為什麼要使用__autoload

1,首先是不知道這個類檔案存放在什麼地方,

2,另外一個就是不知道什麼時候需要用到這個檔案。

3,特別是專案檔特別多時,不可能每個檔案都在開始的部分寫很長一串的 require …

替代了一

require_once ("classes/Books.class.php") ;

require_once ("classes/Employees.class.php" ) ;

require_once ("classes/Events.class.php") ;

require_once ("classes/Patrons.class.php") ;

zend推薦了一種最流行的辦法,在檔案名稱中包含路徑。例如下面的例子:

1 [php] view plaincopyprint?

2

3 view sourceprint?

4 // Main.class

5 function __autoload($class_name) {

6 $path = str_replace(‘_‘, DIRECTORY_SEPARATOR, $class_name);

7 require_once $path.‘.php‘;

8 }

temp = new Main_Super_Class();

所有的底線都會被替換成路徑中的分隔字元,上例中就會去 Main/Super/Class.php檔案。

缺點:

是在編碼過程中,必須明確的知道代碼檔案應當所處的位置,

而且由於將檔案路徑寫入程式碼在了類名中,如果需要修改檔案夾的結構時,我們必須手工修改所有的類名。

如果是在一個開發環境中,並且對於速度不是很在意的話,使用‘Include All’這個方法是非常方便的。

通過將所有類檔案放在一個或幾個特定檔案夾中,然後通過遍曆的方式尋找載入。

例如

<?php

$arr = array (

‘Project/Classes‘,

‘Project/Classes/Children‘,

‘Project/Interfaces‘

);

foreach($arr as $dir) {

$dir_list = opendir($dir);

while ($file = readdir($dir_list)) {

$path = $dir.DIRECTORY_SEPARATOR.$file;

if(in_array($file, array(‘.‘, ‘..‘)) || is_dir($path))

continue;

if (strpos($file, ".class.php"))

require_once $path;

}

}

?>

另外一個方法是在類檔案和他的位置之間建立關聯的設定檔,例如:

view sourceprint?

// configuration.php

array_of_associations = array(

‘MainSuperClass‘ = ‘C:/Main/Super/Class.php‘,

‘MainPoorClass‘ = ‘C:/blablabla/gy.php‘

);

調用的檔案

<?php

require ‘autoload_generated.php‘;

function __autoload($className) {

global $autoload_list;

require_once $autoload_list[$className];

}

$x = new A();

?>

3.建構函式和解構函式

PHP 構造方法 __construct() 允許在執行個體化一個類之前先執行構造方法。

構造方法是類中的一個特殊方法。當使用 new 操作符建立一個類的執行個體時,構造方法將會自動調用,其名稱必須是 __construct() 。

(在一個類中只能聲明一個構造方法,而是只有在每次建立對象的時候都會去調用一次構造方法,不能主動的調用這個方法,

所以通常用它執行一些有用的初始化任務。該方法無傳回值。)

作用: 用來建立對象時初始化對象

子類執行分類的建構函式parent::__construct().

解構函式: __destruct ()定義:特殊的內成員函數,沒有傳回型別,沒有參數,不能隨意調用,也沒有重載;

只是在類對象生命結束的時候,由系統自動調用釋放在建構函式中分配的資源。

與構造方法對應的就是析構方法,析構方法允許在銷毀一個類之前執行的一些操作或完成一些功能,比如說關閉檔案、釋放結果集等。

解構函式不能帶有任何參數,其名稱必須是 __destruct() 。

PHP 類與對象 全解析方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.