国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

創建靈巧結構的PHP程序[轉]

創建靈巧結構的PHP程序[轉]

更新時間:2022-05-10 文章作者:未知 信息來源:網絡 閱讀次數:

建立靈巧結構的PHP程序

時間:2000/10/19 09:06 作者:sharetop 奧索網



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

經過了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 庫的例子

<?php

//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 "<H4>Updating A Bug</H4>
<P>";

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

echo "<H3>Update Failed!</H3>";

} else {

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

echo site_footer();

?>


Data 訪問庫的例子

<?php
/**
*
* controls access to updating a bug in the
* database. Validates data and checks security
* Returns true on success, false on failure
*
*/

function bug_data_update ($field1,$field2,$field3) {
//global string to report back errors
global $feedback;

//$field1 and $field2 are required
if (!$field1 || !$field2) {
$feedback="Field 1 And Field 2 Are Required";
return false;
}

//make sure this user has permission to update
if (!user_isadmin()) {
$feedback="You Must Be An Admin To Update a Bug";
return false;
}

//now let's update the bug

$result=db_query("UPDATE bug ".
"SET field2='$field2',".
"field3='$field3' ".
"WHERE id='$field1'");

//now check your query for success/failure
if (!$result) {
//update failed
return false;
} else {
return true;
}
}

?>


3、可移植性

毫無疑問,你不想讓你的代碼只能用于一個固定的站點,將來我們可能改變色彩的選擇、元素的名稱、字體或其它一些什么,這樣應設置一個config文件,它被多個頁面所包含。更好的觀點是你的站點被模塊化,你不需要copy&paste任何一個HTML文件,我傾向于把這些放入一個函數,在任何需要的地方調用它們。

同樣的方法可用于數據庫的密碼、數據庫連接字串等,這些可以放入一個數據庫處理的抽象層中。


4、面向對象/函數化

我們不是用COBOL開發,所以這意味著我們可以把進程分成多個函數的調用。每個調用都是一個自動的行為,有時僅僅是調用一小段其它的函數并返回這個結果。

一個好的例子是在每一個頁面校驗用戶是否登錄,你可以用cookie或查詢數據庫來完成這個功能,但一旦你想改變你的驗證系統,你不得不改動每一個頁面,其實你應該可以通過改動函數庫里一個普通的函數就完成這個變動的。任何時候,你寫一段代碼,如果它將會被用于多于一個地方,你就要考慮把它放入一個庫里了。


其它還有什么?

顯然還有很多我沒有談到的事,告訴我你的想法,我將在下一篇文章中來討論它們。特別地是,如果你寫了一個大型的、復雜的應用程序,我想聽聽你是如何規劃它的及你重做時不什么不同的想法。

-------------------
作者:Tim Perdue
譯者:sharetop(ycshowtop@21cn.com)
來源:www.phpbuilder.net

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        日本三级亚洲精品| 中文字幕一区三区| 国产亚洲一区二区三区| 黄网站免费久久| 国产午夜精品理论片a级大结局| 国产精品综合一区二区三区| 国产亚洲综合色| 色综合一个色综合| 爽爽淫人综合网网站| 精品1区2区在线观看| 国产黄人亚洲片| 曰韩精品一区二区| 91精品国产综合久久久久久久| 精品亚洲成a人| 亚洲人xxxx| 久久综合九色综合欧美98| 91在线观看下载| 免费精品99久久国产综合精品| 久久综合九色综合97婷婷| av在线播放一区二区三区| 亚洲国产综合人成综合网站| 日韩精品影音先锋| 99久久精品国产网站| 免费看欧美女人艹b| 亚洲精品视频在线| 久久精品亚洲一区二区三区浴池 | 精品福利一区二区三区免费视频| 顶级嫩模精品视频在线看| 五月激情综合网| 国产精品丝袜久久久久久app| 欧美久久久久免费| 99久久伊人久久99| 国产资源在线一区| 日日夜夜精品视频免费| 国产精品成人免费在线| 精品99一区二区三区| 欧美日本一区二区| www.66久久| 成人性视频网站| 国产一区二区三区观看| 青青草97国产精品免费观看无弹窗版| 国产精品传媒入口麻豆| 久久精品一区二区三区不卡牛牛| 欧美军同video69gay| 色悠久久久久综合欧美99| 国产iv一区二区三区| 久久99精品国产91久久来源| 五月综合激情婷婷六月色窝| 亚洲精品欧美在线| 亚洲色图清纯唯美| 亚洲天天做日日做天天谢日日欢 | 成人动漫一区二区在线| 国产在线精品视频| 激情国产一区二区| 国模大尺度一区二区三区| 日韩avvvv在线播放| 亚洲成人综合在线| 婷婷开心激情综合| 蜜臀av一级做a爰片久久| 免费xxxx性欧美18vr| 日韩精品国产欧美| 毛片不卡一区二区| 国产在线精品一区二区三区不卡 | 亚洲香肠在线观看| 手机精品视频在线观看| 视频一区中文字幕| 久久精品噜噜噜成人88aⅴ| 秋霞国产午夜精品免费视频| 青青草视频一区| 国产精品一区久久久久| 丁香婷婷深情五月亚洲| 99国产精品视频免费观看| 色天天综合久久久久综合片| 欧美主播一区二区三区美女| 欧亚洲嫩模精品一区三区| 欧美日韩免费电影| 日韩三级免费观看| 欧美国产亚洲另类动漫| 亚洲黄色av一区| 日韩成人一区二区| 国产成人综合视频| 日本久久一区二区| 日韩欧美www| 亚洲同性gay激情无套| 偷偷要91色婷婷| 国产成人精品三级麻豆| 欧美在线免费视屏| 国产色产综合产在线视频| 最新热久久免费视频| 日韩成人一级大片| 99热国产精品| 日韩精品综合一本久道在线视频| 国产精品久久久久精k8| 视频一区中文字幕国产| jizz一区二区| 日韩欧美国产三级| 一区二区三区加勒比av| 日韩精品一二三| 91首页免费视频| 久久综合九色综合欧美就去吻| 亚洲日本欧美天堂| 国产福利视频一区二区三区| 欧美日韩一区二区在线观看| 中文一区二区在线观看| 美美哒免费高清在线观看视频一区二区| 成人黄色软件下载| 日韩欧美国产综合一区| 亚洲成人av电影在线| aaa欧美色吧激情视频| 2023国产一二三区日本精品2022| 亚洲一区二区三区在线看| 国产精品123区| 精品日韩欧美在线| 日本视频中文字幕一区二区三区| 色婷婷精品大在线视频| 国产午夜三级一区二区三| 久久国产日韩欧美精品| 777午夜精品免费视频| 亚洲国产精品嫩草影院| 99re热这里只有精品视频| 中文字幕免费不卡| 国产高清亚洲一区| 国产三级精品视频| 精品一区二区国语对白| 精品国产伦一区二区三区观看方式 | 免费成人性网站| 欧美又粗又大又爽| 一个色在线综合| 91美女在线看| 亚洲欧美综合色| 91一区在线观看| 国产精品久久久久久亚洲毛片| 国产精品综合视频| 久久精品男人的天堂| 国产福利一区二区三区| 久久精品视频免费| 成人一区在线观看| 最新成人av在线| 色综合久久综合| 亚洲h在线观看| 日韩欧美高清一区| 丰满少妇久久久久久久| 18欧美亚洲精品| 欧美视频在线一区二区三区 | 日日夜夜精品视频天天综合网| 91精品国模一区二区三区| 日本aⅴ亚洲精品中文乱码| 日韩欧美国产综合| 粉嫩蜜臀av国产精品网站| 国产精品久久三区| 色噜噜狠狠成人中文综合| 视频精品一区二区| 26uuu国产一区二区三区 | 精品亚洲成a人| 国产精品三级av在线播放| 91片黄在线观看| 日韩精品亚洲一区| 国产日韩欧美电影| 欧美系列日韩一区| 国产一区二区三区黄视频| 中文字幕中文字幕在线一区| 欧美午夜免费电影| 国产一区亚洲一区| 亚洲曰韩产成在线| 久久精品免视看| 欧美日韩免费观看一区三区| 久久精品国产亚洲aⅴ| 国产精品素人一区二区| 欧美日韩激情一区二区| 国产成人aaa| 日本美女一区二区| 中文字幕佐山爱一区二区免费| 欧美怡红院视频| 成人夜色视频网站在线观看| 日本欧美韩国一区三区| 亚洲欧美日韩在线不卡| 亚洲精品一区二区三区99| 欧美主播一区二区三区美女| 国产一区二区三区在线观看免费视频 | 国产成人av电影| 日本伊人色综合网| 玉米视频成人免费看| 国产日产欧美一区二区视频| 欧美日韩一区在线| 99久久99久久久精品齐齐| 麻豆freexxxx性91精品| 亚洲va欧美va人人爽午夜| 亚洲视频香蕉人妖| 国产精品污网站| 久久久精品免费网站| 日韩精品中文字幕在线一区| 91麻豆精品国产91久久久久久久久| 99精品国产热久久91蜜凸| 成人h动漫精品一区二| 成人综合在线网站| 国产999精品久久久久久绿帽| 国产在线精品免费| 国产福利一区在线| 粉嫩绯色av一区二区在线观看 | 自拍偷自拍亚洲精品播放|