在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
**:
我眼中真正優秀的CTO長啥樣
現在很多創業公司在找cto,但是優秀的cto是極度稀缺的,究竟優秀的cto需要具備什麼樣的特徵,如何才能成為優秀的cto呢。作為cto你不可能什麼技術都精通,但什麼技術你都要懂和了解,以及對如今的技術發展趨勢和技術的各種使用場景,需要掌握。使用場景分為產品的早期 中期 後期對應的技術方案要清楚。例如...
漫畫賞析 Linux 核心到底長啥樣
今天,我來為大家解讀一幅來自 turnoff.us 的漫畫 inside the linux kernel turnoff.us 是乙個極客漫畫 作者daniel stori 畫了一些非常有趣的關於程式語言 web 雲計算 linux 相關的漫畫。今天解讀的便是其中的一篇。在開始,我們先來看看這幅漫...
漫畫賞析 Linux 核心到底長啥樣
今天,我來為大家解讀一幅來自 turnoff.us 的漫畫 inside the linux kernel turnoff.us 是乙個極客漫畫 作者 daniel stori 畫了一些非常有趣的關於程式語言 web 雲計算 linux 相關的漫畫。今天解讀的便是其中的一篇。在開始,我們先來看看這幅...