首页 » 建站技术 » PHP 技术 » 浏览内容

[学习笔记] 中原大学PHP视频教程 之五


2006-04-15 10:53:11 5,156 0 发表评论 字体: 作者:C.K.
标签: 中原大学php视频教程学习笔记

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

物件  

使用者定義的物件,也是學好 PHP 所必備的條件之一。而 PHP 的物件,和其它的物件導向語言比較起來,還算蠻單純的。PHP 只有類別 (class)、方法 (method)、屬性、以及單一繼承 (extensions) 等。對不習慣使用 C++、Java、Delphi 等物件導向語言來開發程式的使用者,不妨先閱讀一下有關物件導向觀念的書,相信可以帶來許多的收獲。

下面的範例是手推車的物件。可以看到,使用 class 表示它是一個物件類別。在類別中的 function,例如 add_item 則表示該物件的一個方法。方法可以封裝物件的實際處理情形,讓該物件自己能依封裝好的方法來執行一些動作。

程式中的 $this 物件變數也和 $GLOBALS 及 $php_errormsg 二個變數一樣,在 PHP 中屬於特殊的變數。$this 變數只用在物件類別中,表示物件的本身。


// 程式名: cart.inc
class Cart {
var $items; // 手推車物件

// 本方法加入 $num 件物品到手推車中 (加到 $artnr 變數)
function add_item ($artnr, $num) {
$this->items[$artnr] += $num;
}

// 本方法從手推車減少 $num 件物品 (從 $artnr 變數減掉)
function remove_item ($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>

要使用手推車可以用類似下例的方式。可以先將每個物件存成 Include 檔案,再將它 require 或 include 進來。在宣告變數 $cart 時,要使用 new 的保留字,表示 $cart 使用 Cart 物件。使用 -> 符號,表示執行物件的方法。

require(“cart.inc”);
$cart = new Cart;
$cart->add_item(“10”, 1);
?>

之後再設計有記名的手推車。記名手推車從手推車遺傳下來,因此手推車擁有的方法及屬性,記名手推車也有,而記名手推車比手推車增加了名字的方法 (或許該稱屬性較恰當)。

從下例中可以看到,子物件 Named_Cart 使用 extends 來繼承其父物件 Cart。雖然 Named_Cart 物件中沒有增加物品及減少物品的方法,不過由於遺傳的特性,父物件有的東西它都有。

// 程式名: named_cart.inc
require(“cart.inc”);
class Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
$this->owner = $name;
}
}
?>

要使用記名手推車物件,請看下面的範例。當然這不算太好的設計,每個子物件都一直 require 它的父物件,會造成伺服器在 I/O 上面的負擔。在實作時,可以將整個系列的物件在同一個程式檔案中,從最早的袓先物件到最後的子孫物件,也方便日後修正。

require(“named_cart.inc”);
$ncart = new Named_Cart; // 建立物件變數
$ncart->set_owner (“CyberRidder”); // 設定物件的記名屬性
echo $ncart->owner; // 顯示物件的記名屬性
$ncart->add_item (“10”, 1); // 從父物件遺傳的方法也可使用
?>

因此,在 PHP 中使用了 extends 保留字,加上良好的系統分析與完整的 CRC 卡片 (詳見物件導向相關書籍) 設計之後,PHP 可變成擁有強大物件能力的 CGI 語言。

PHP 由於是劇本語言 (Script),因此程式原始碼可見,在軟體工程中的元件黑箱並不會在目前的 PHP 版本中出現,也就是說,全部的物件其實沒有隱藏起它的內容。對於軟體業者而言,沒有辦法保護所謂的軟體 IC,站在開放社群而言,反而有原始碼是件好事,至於孰是孰非,就很難判定了,不過目前 PHP 還是 Open Source 社群的一份子,或許日後 Zend 引擎可以做到物件封裝的功能也不一定。

    网站统计 Statistics

    • 创建时间: 2005年1月3日 距今4915 天
    • 日志总数: 2461
    • 评论总数: 630
    • 标签总数: 654
    • 链接总数: 273
    • 最后更新: 2017-7-1 18:16:33
    • 您是本站第 13628704 位访客

    广告区 Guǎng Gào