首頁 後端開發 php教程 建立靈巧結構的PHP程式_PHP教程

建立靈巧結構的PHP程式_PHP教程

Jul 21, 2016 pm 04:10 PM
php 完成 建立 文章 時間 程式 結構


很早就想寫這篇文章了,但一直沒有時間完成它。不是說我來告訴大家如何做,我更希望本文只是做為一個引子,與大家來討論關於如何建立一個有效地、靈活的網絡應用程序。

經過了2-3年的網頁應用程式開發工作,我的開發經驗變得更加生動了,回過頭來看我以前為Geocrawler寫的程式碼,簡直不敢相信這是我的。由於GPL的原因,在PHPBuilder中的原始碼也是良莠不齊的。

最近我做為一個有經驗的PHP開發者,一直在幫著寫SourceForge,我想這顯示出了最終結果的一個範圍。好的程式碼應被分成了多個部分,合適的函式庫及函數調用,清楚的資料庫結構,站點的每一個部分與其它部分都是相對獨立的。

但是,這仍不是最好的。如果我可以重做,我將更多的關注於HTML層與資料層的分離,透過物件及清楚的函數庫實現這一點。

優美的圖形

我知道經理們喜歡用優美的圖形及圖表來描述它們,這將給我們留下最好的印象。用這種隱藏在一個結構後的想法,你可以把你的邏輯與外觀分離,這意味著任何一個複雜的程式都可以用"API/Data Access Layer"來表述。

與其你把安全偵測、更新的句子等放在HTML層中,不如把它們整體放在你的​​API層裡。而這個HTML層只含有簡單的函數呼叫和傳回的陣列、物件或自定的其它什麼,以及一些資料庫的檢索結果的集合等。

如果你這樣做了,頂層將是非常的瘦小,你可以方便地創建和維護它。

如下的例子中,這個HTML介面中只有一些API層中的函數的直接調用,一些HTML工具庫(它能產生一個彈出框等等),和一些從資料庫抽象層中調用的資料庫操作方法(你不需要綁定某一個特別的資料庫)。 基礎

靈活的PHP程序結構最基本的方面有以下幾點:

資料庫無關
界面無關性
可移植性
面向對像或至少應由函式庫組成

還有其它的?
當然還有一些其它的東西,但我認為那都是太大了,或許你自己能指出它們。


讓我們詳細地談談它們每一條吧。

1、資料庫無關性

你從不知道你的網站將會在哪裡運行,當然在你創建它時,你希望它變和得很大並且有很高的流量。所以你不想把你自己約束在 MS Access 上面或它什麼輕便的資料庫系統。雖然你不能立刻地插入各種不同的資料庫系統,但是你有可能很方便地在它們中間切換。你有一些不同的選擇可以把你的資料庫呼叫抽象化。在PHP中一個奇特的方法是你必須為每個不同的資料庫系統寫出不同的程式碼,因為在PHP中對每一種不同的資料庫的存取函數是不同的。為了避開這一點,你可以使用一個抽像地資料庫存取層,就像PHPLib、下一個版本的PEAR、以及我們在SourceForge中所描述的。

2、介面無關性

一個應用程式是它的技術更重要還是它所運作的網站更重要?我們並不能真正知道。我從來不相信這一點——HTML是一個標準。特別是對於一個網頁應用程式而言,介面發生了改動,這意味著我們必須總是重寫。但是如果你的應用程式是很大很複雜的,你就要為你的資料庫建立一些其它的介面了,只要你不想在你的網站程式中到處copy&paste你的訪問檢查等程式碼。這也意味著,如果你正確地設計了你的應用程序,你可以很容易地改寫你的網站讓它適應WAP,只要簡單地寫一個小的WAP介面,並讓它呼叫你的資料庫存取物件而已。但如果你沒有很好地設計你的程序,你把你的HTML版改成WAP版是一個複雜的工程。

我把這個想法也帶入了SourceForge中,我們有一個巨大的用戶群,為我們發送/接收bugs、任務等。首先,我們指出所有的這些將通過我們的web頁面接口,然後,由於Eric Raymond 和其他人給的壓力,我們決定用XML來做資料庫的外部接口。

幸運的是我們曾在四月已把程式的核心邏輯程式碼與它的介面分開了。我將試著表達我們是如何做到的,希望對你的工作有所幫助。

這個SourceForge的bugs追蹤器和其它的一些工具被分成兩個函式庫-這個HTML函式庫和資料存取函式庫。這個資料存取庫檢查輸入的值的正確性,處理安全校驗,並且當成功/失敗時回傳TRUE 或 FALSE。

由於簡化的原因,這個例子並沒有基於一個完善的對像模式,那樣我還要解釋這個基類和它的一些衍生類等等,我想這個例子將給你一個最普通的想法。HTML 函式庫的範例

//connect to database
require ("database.php");

//common utils like header/footer HTML
require ("html. php");

//data access library
require ("bug_data.php");

echo site_header("Page Title");

echo site_header("Page Title");

e
e" Updating A Bug
  ";

if (bug_data_update($field1,$field2,$field3)) {

echo " Update Failed! ";

} else {

echo " Updated Bug Successfully ";
//echo the global error string
echo $feedback;
}

echo site_footer();

?>


Data 存取庫的範例

3、可移植性

毫無疑問,你不想讓你的程式碼只能用於一個固定的站點,將來我們可能改變色彩的選擇、元素的名稱、字體或其它一些什麼,這樣應設置一個config文件,它被多個頁面所包含。這些放入一個函數,在任何需要的地方呼叫它們。

4、物件導向/函數化

我們不是用COBOL開發,所以這意味著我們可以把進程分成多個函數的呼叫。有時只是調用一小段其它的函數並返回這個結果。想改變你的驗證系統,你不得不改動每一個頁面,其實你應該可以透過改動函數庫裡一個普通的函數就完成這個變動的。於一個地方,你就要考慮把它放入一個庫裡了。 ,我將在下一篇文章中來討論它們。




http://www.bkjia.com/PHPjc/314028.html

www.bkjia.com

true

TechArticle很早就想寫這篇文章了,但一直沒有時間完成它。不是說我來告訴大家如何做,我更希望本文只是做為一個引子,與大家來討論關於如何建造...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

See all articles