亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP框架原理

2020-03-22 18:10:34
字體:
來源:轉載
供稿:網友
  •   本文主要來聊聊框架理論,但不針對任何一款框架,不過任何一款框架都離不開這個理論,首先我們了解下框架的來龍去脈,任何技術的出現都是為了解決某個問題,之前的博客有講過smarty,其存在就是為了html和php更好地分離開來。而所謂的“框架”是一種為了統一書寫格式,訪問方式而進行的自我約束行為,其實按照這個說法我們每個人基本上都或多或少的使用過自己定義的框架,比如說在沒使用框架之前自己開發一個項目,有時候是一天無法完成的,我們為了防止混亂,為了更好地記憶我們會進行目錄規劃和程序的規劃,潛意識的把程序分類,放到不同的文件夾,于是框架應運而生了,又比如說我們曾經做了一個CMS系統,如果我們又接手一個類似的項目,你會重復書寫代碼嗎,答案肯定不會,但如果是別人的項目你拿來改其實是一件很蛋疼的事情的,因為你根本不知道他的這個CMS的規則是什么,即使是自己的項目時間久了如果自己沒有固定的規范的話也是很容易忘記的,那么怎么樣才能保證自己每次寫的代碼都可以按照一定的規范呢,把每個項目要用的東西挑出來,目錄結構挑出來,以后無論什么項目都在這個基礎上書寫,那么屬于自己的框架就出來了。

      但框架單純這樣是不完善的,那么框架應該有哪些能力呢,與其這樣說我們不妨想想我們平時一定會寫的代碼一定會做的事情是什么呢,首先解決的是什么呢,為了減少路徑問題,目錄結構的安排其實很重要,有時候文件包含 再進行文件的移動總是一件很蛋疼的事情,最好的辦法是什么呢,絕對路徑,但同時存在了一個類似E:/www 這樣的問題,但這個值我們可以通過預定義變量$_SERVER["DOCUMENT_ROOT"]獲得,我們可以將其定義為常量,define("ROOT_PATH", $_SERVER["DOCUMENT_ROOT"]);include ROOT_PATH . "/lib/mysql.php";類似這樣的文件夾怎么移動都不會有事的,那么就出現了一個固定的寫法,為了解決路徑問題而存在的寫法,幾乎每一頁都會用到,還有模板的輸出,數據庫的連接,那么我們可以把這些代碼封裝起來,或者分離出來,每一頁包含即可,被分離的這些部分其實就是一個小框架,為什么這么說呢,如果我們包含它們進來,例如smarty模板,肯定是實例化好的對象,那個量名已經固定,可能是$smarty 如果我們包含了這么個文件進來,這個量就不能再次進行賦值使用,這樣下面部分的代碼就無法進行使用了,由于包含的類,如數據類 上傳類 圖像類 分頁類 位置已經寫死在這個公共文件里,為了不改代碼 這個目錄就成了必須存在的了,目錄格式固定,編寫代碼方式的約束,這就形成了框架。 

      多年來的程序員的總結交流及開發經驗,大家總結了一些優秀的編寫方式,最經典的是單點入口,什么是單點入口呢,之前我們總結了一些幾乎每個程序都要用到的功能,這里依然存在一些問題,例如 在公共文件包含之前我們還是不知道根目錄是多少,如果我們在每一個文件夾下面都放一個公共文件存在代碼重復問題,哪天修改的話需要全部修改,需要找到需要多少個這樣的文件,現在是多個程序包含一個程序,然后用戶訪問n個程序來完成各個功能,于是程序員就想可不可以反過來我用一個程序包含這些不同功能的程序,用戶只訪問這個程序就可以了呢,于是單點入口模式出現了,在網站首頁的index.php寫上每個程序都要用的部份然后跟據某個量,比如一個get量來判斷當前實際要執行的程序是哪一個,由index.php把它包含進來運行,這種由一個程序。完成所有功能的方式,稱為單點入口,于是由這個入口程序和它對應的各個目錄結構成為了一個框架。

      出于安全在包含文件的時候往往都會固定目錄,不然就容易出漏洞所以,往往會在路徑頭尾加個限制。例如


    <?PHPinclude "./app/" . $_GET['url'] . ".php";?> 

    那路徑就只能寫成類似這樣index.php?url=news/list,實際包含的是/app/news/list.php當然了,實際的情況,還要檢查一下這個程序文件是否存在之類的。

    完整一點的話。我們可以這樣寫這個入口文件。
    <?php//這里寫絕對路徑//這里寫數據庫連接//這里寫模板初始化,配置//這里判斷連接變量//這里包含文件進來運行//這里輸出模板//這里關閉數據庫?> 
    一個面向過程的單點入口框架就完成了,是不是有覺得每次都在地址欄帶一個get不方便?那我們可以換一個寫法,例如tp框架最喜歡用的http://localhost/index.php/news/list后面的/news/list由程序轉成php路徑包含進來就可以了。在Apache環境中,這個/news/list可以由服務器變量的PATH_INFO取得,如果沒有的話。也可以用REQUEST_URI取得接近的 ,IIS下面,有HTTP_X_REWRITE_URL可以取得這個值 ,自從單點入口模式出現之后,而且oop開發模式從php5開始大行其道,各種oop設計的框架讓我們眼花繚亂,但是萬變不離其宗,依然是什么入口方式,路徑結構是什么樣的,文件名的命名規則,用什么樣的訪問方式,可以運行哪個程序。用oop開發的框架,不外乎就是把主程序改寫成為了一個類,

    例如:

    //包含共用文件,實例化各個類啥的
    頁面->初始化();

    //把用戶發來的網址轉成要包含的路徑
    頁面->處理網扯();

    //在這里包含程序運行
    頁面->運行()

    //輸出模板
    頁面->輸出()

    各種各樣的框架只是為我們準備了一個規矩罷了。。在我們的開發累計的過程中,我們常常會把一些常用的類封裝成類,例如,數據庫類,文件上傳類,圖片處理類,郵件收發類,遠程訪問類,各種接口類……這個時候,我們就會希望框架能給我們提供一個好一點調用類的方法,也就是所謂的“擴展性” ,比如TP框架的Db類 。如果不用其自帶的類庫只用它們的核心框架,其實幾個文件就夠了。TP框架支持三種訪問格式。
    /news/list
    /index.php/news/list
    /index.php?m=news&a=list第一種需要服務器的 urlrewrite 支持,后面兩種可以直接用,事實上,Zend框架也差不多文件的包含方式是。以類的形式包含,執行的其實是:/文件夾/對象/方法,這種做法有優勢。因為在同一個功能中,相似的代碼很多,封裝到同一個類里面,可以更高效的重復使用代碼 ,
    比如這樣class NewsAction {    public function head() {        在這里處理每一頁頭部    }    public function index() {        $this->head();        在這里處理這一頁    }    public function show() {        $this->head();        在這里處理這一頁    }

    還可以利用構造函數等,使每一個功能,在剛進來的時候就都做了同一件事情。以上就是簡單框架的理論。

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    超碰日本道色综合久久综合| 日本午夜在线亚洲.国产| 国产日韩换脸av一区在线观看| 高跟丝袜一区二区三区| 日韩美女写真福利在线观看| 国产精品私拍pans大尺度在线| 国产区精品在线观看| 成人国产精品一区二区| 久久精品国产成人| 国产日本欧美一区二区三区| 亚洲国产日韩精品在线| 成人做爰www免费看视频网站| 久久久免费av| 国内精品小视频| xvideos国产精品| 亚洲综合成人婷婷小说| 欧美日韩免费观看中文| 日本精品视频在线| 成人国产精品日本在线| 综合欧美国产视频二区| 亚洲福利在线观看| 国产亚洲成av人片在线观看桃| 国产精品亚洲片夜色在线| 亚洲欧美国产制服动漫| 国产91精品黑色丝袜高跟鞋| 国产精品吊钟奶在线| 国产精品久久综合av爱欲tv| 欧美午夜久久久| 亚洲专区国产精品| 2019中文在线观看| 久久天天躁狠狠躁夜夜av| 一本一本久久a久久精品综合小说| 日韩av在线一区| 亚洲国产精品久久久久秋霞蜜臀| 精品亚洲一区二区三区| 国产香蕉97碰碰久久人人| 欧美激情亚洲另类| 欧美国产日韩一区二区| 欧美精品在线极品| 欧美性极品少妇精品网站| 欧美视频在线观看 亚洲欧| 亚洲精品欧美极品| 91成人在线播放| 精品亚洲一区二区三区四区五区| 日本成人精品在线| 亚洲人成电影网站色…| 国产亚洲精品日韩| 色噜噜国产精品视频一区二区| 精品一区二区三区四区在线| 91国内免费在线视频| 日本精品一区二区三区在线| 九色精品美女在线| 久久久影视精品| 插插插亚洲综合网| 国产一区在线播放| 91免费精品国偷自产在线| www.美女亚洲精品| 成人精品久久一区二区三区| 久久精品福利视频| 精品国产拍在线观看| 日韩中文综合网| 午夜精品久久久99热福利| 亚洲人成毛片在线播放| 欧洲日本亚洲国产区| 国产精品视频地址| 九九视频直播综合网| 国产成人精品视| 亚洲a在线播放| 国产精品高精视频免费| 欧美精品情趣视频| 欧美又大粗又爽又黄大片视频| 欧美一级在线播放| 久久伊人色综合| 亚洲天堂男人的天堂| 亚洲欧美日韩久久久久久| 美女精品视频一区| 欧美洲成人男女午夜视频| 日韩精品视频在线播放| 91精品久久久久久久久青青| 国产精品免费小视频| 91探花福利精品国产自产在线| 国产精品福利观看| 精品亚洲国产成av人片传媒| 久久天天躁狠狠躁夜夜爽蜜月| 在线视频欧美日韩精品| 国产成人拍精品视频午夜网站| 国产成人一区二区三区小说| 国产精品久久久久久久久久小说| 国产+人+亚洲| 欧美裸身视频免费观看| 国产一区二区日韩| 国产一区玩具在线观看| 欧美在线激情视频| 欧美在线视频一区| 亚洲成人激情视频| 亚洲天堂免费视频| 丝袜美腿精品国产二区| 亚洲精品中文字幕av| 亚洲成人久久久久| 自拍偷拍亚洲精品| 91精品国产综合久久久久久蜜臀| 亚洲午夜未满十八勿入免费观看全集| 一区二区三区视频观看| 国产免费久久av| 久久99精品久久久久久琪琪| 精品久久久免费| 国产精品xxxxx| 色偷偷噜噜噜亚洲男人的天堂| 午夜精品美女自拍福到在线| 在线激情影院一区| 亚洲精品乱码久久久久久金桔影视| 69久久夜色精品国产7777| 国产精品露脸自拍| 国产精品com| 激情av一区二区| 色综合天天狠天天透天天伊人| 一区二区欧美久久| 国产亚洲美女久久| 国产亚洲精品激情久久| 91人人爽人人爽人人精88v| 成人免费自拍视频| 少妇高潮 亚洲精品| 国产精品 欧美在线| 91夜夜揉人人捏人人添红杏| 国产精品视频区1| 亚洲一区中文字幕| 91精品国产九九九久久久亚洲| 国产精品视频区| 国模精品视频一区二区| 成人午夜黄色影院| 午夜欧美不卡精品aaaaa| 国产精品一区二区久久久| 精品久久久一区二区| 一区二区三区四区在线观看视频| 国产亚洲精品美女久久久久| 亚洲精品国产suv| 亚洲欧美一区二区三区四区| 国产精品久久久av久久久| 亚洲第一色中文字幕| 国产日韩欧美在线观看| 日产精品99久久久久久| 亚洲欧美国产日韩中文字幕| 亚洲精品www| 亚洲免费av电影| 色综合亚洲精品激情狠狠| 日韩电影免费在线观看中文字幕| 久久久久久美女| 国产精品视频色| 美日韩丰满少妇在线观看| 2020欧美日韩在线视频| 日本亚洲精品在线观看| 97成人超碰免| 国产精品毛片a∨一区二区三区|国| www.久久久久久.com| 91久久在线观看| 这里只有精品视频在线| 久久综合久久88| 92看片淫黄大片看国产片| 国产精品国产三级国产专播精品人| 亚洲精品久久久久中文字幕二区| 91精品在线国产| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲天堂视频在线观看| 久久艹在线视频|