在php的論壇中總是聽到有人對php的oop支援說三道四的,說這有缺陷,那裡不足,但是都拿不出實際的例子。原來說過要和大家說說這事,但是一直很忙,現在算是抽了些時間了,所以把我剛剛做過的乙個專案的框架拿出來和大家**一下。這個專案99%的**是用oop方式編寫的,感覺php對於oop支援非常好,不是一般的好,是非常的好。有由於專案本身是乙個商業專案所以源**不好公布出來,但是基本框架還是可以說一說的,而且經過簡化的例子更容易理解一些。如果你對php中的oop還不太了解,還是就此打住吧,先去看看手冊,或者基礎讀物再來看也不遲,反正這個是貼子沒有長腿也跑不了。
長話短說,立刻開始吧。我這裡會用到乙個簡單的例子,只有乙個半的功能。乙個是向瀏覽器傳送一句"hello, i can say oop in php world!",另外半個功能是從資料庫中進行乙個查詢然後輸出到瀏覽器,說它是半個功能是因為只是作為乙個例子講講沒有實際的資料庫操作。
首先從我的第乙個檔案index.php 開始介紹吧。我的index.php檔案是這樣的:
**:
**:
**:
<?php
class page
function show() }
?>
其中這個show方法應該是所有頁面物件都具有的方法,只是在實現上有所不同。
class.hellopage.php
**:
<?php
require_once ("class.page.php");
class hellopage extends page
function show() }
?>
class.databasepage.php
**:
<?php
require_once ("class.page.php");
class databasepage extends page
function show() }
?>
**:
**:
你現在不用太關心這個 database物件從何而來如何實現,知道它是乙個含有資料庫連線的物件就可以了,如果用過phplib, adodb,或者pear庫的就很容易理解。
這個語句:
$this->db = & new database(db_host,db_name,db_login,db_pass);
就是建立乙個資料庫連線而已。
至於db_host,db_name,db_login,db_pass 這些都是常量我們在config.php中已經預先設定。
由於資料庫操作頁面 databasepage 需要進行資料庫連線所以它也需要乙個變數 $db 來儲存資料庫物件,所以我們需要把databasepage改進成這樣:
class.databasepage.php
**:
php中的OOP語法
類宣告 class classname extends parentclass 其中,extends parentclass為繼承 php中不支援域限定符 private,public,protected等,因此所有的變數可以說都是public的。類成員宣告 var a1 類成員的使用 this a...
php中的OOP語法
類宣告 class classname extends parentclass 其中,extends parentclass為繼承 php中不支援域限定符 private,public,protected等,因此所有的變數可以說都是public的。類成員宣告 var a1 類成員的使用 this a...
PHP的OOP簡單入門
在php的論壇中總是聽到有人對php的oop支援說三道四的,說這有缺陷,那裡不足,但是都拿不出實際的例子。原來說過要和大家說說這事,但是一直很忙,現在算是抽了些時間了,所以把我剛剛做過的乙個專案的框架拿出來和大家 一下。這個專案99 的 是用oop方式編寫的,感覺php對於oop支援非常好,不是一般...