av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

構(gòu)建自己的PHP框架--搭建基本結(jié)構(gòu)

首先,我們來說一下,為什么要創(chuàng)建自己的框架?

創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)酉陽土家族苗族,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

為什么要創(chuàng)建自己的框架呢?如果你跟周圍的人討論,每個人都會告訴你重復(fù)發(fā)明輪子是一件糟糕的事情,你最好選擇一個已有的框架,忘掉“創(chuàng)建自己的框架”這種想法。大部分情況,他們是正確的,但是我想到了幾個創(chuàng)建自己的框架的好處:

  • 了解更多框架的底層架構(gòu)

  • 創(chuàng)建一個能滿足你特殊需求的框架(但首先要確定你的需求真的是很特別)

  • 因?yàn)闃啡ざ囍鴮懸粋€框架(為了“學(xué)習(xí)然后拋棄”的目的)

  • 想利用新的開發(fā)技術(shù)以及最佳實(shí)踐重構(gòu)已經(jīng)存在的項(xiàng)目

  • 向世界證明自己也是可以寫出框架的(......但只需那么一點(diǎn)點(diǎn)付出)

我將一步步的,循序漸進(jìn)的引導(dǎo)你創(chuàng)建一個框架。每一步你得到的都是一個完全能使用的框架。我們將從一個簡單的框架開始,然后一點(diǎn)點(diǎn)的給它加功能。最后,你將能得到一個完整的web框架。

上面的原因是摘來的使用Symfony2的組件創(chuàng)建自己的PHP框架,覺得說的不錯就直接拿過來用了。

我們先建立一個目錄,然后進(jìn)入該目錄

  
 
  1. mkdir simple-framework
  2. cd simple-framework

然后分別建立放置controller/model/view等的目錄

  
 
  1. mkdir controllers models views public

public用來存放統(tǒng)一的入口,在里面建立index.php,大部分框架現(xiàn)在都是單一入口。

然后我們需要支持以下composer,我們希望第三方的包都能通過composer來管理。如果你還不知道composer是什么,請查看composer。

在simple-framework文件夾下執(zhí)行 composer init,然后填寫相應(yīng)內(nèi)容,生成一個composer.json文件,其內(nèi)容大概如下:

  
 
  1. {
  2.     "name": "craryprimitiveman/simple-framework",
  3.     "description": "A simple php framework",
  4.     "license": "MIT",
  5.     "authors": [
  6.         {
  7.             "name": "harrysun",
  8.             "email": "[email protected]"
  9.         }
  10.     ],
  11.     "require": {}
  12. }

讓后修改以下,結(jié)果如下:

  
 
  1. {
  2.     "name": "craryprimitiveman/simple-framework",
  3.     "description": "A simple php framework",
  4.     "license": "MIT",
  5.     "authors": [
  6.         {
  7.             "name": "harrysun",
  8.             "email": "[email protected]"
  9.         }
  10.     ],
  11.     "require": {},
  12.     "autoload": {
  13.         "psr-4": {
  14.             "sf\\": "src/",
  15.             "app\\": ""
  16.         }
  17.     },
  18.     "repositories": [
  19.         {"type": "composer", "url": "http://packagist.phpcomposer.com"},
  20.         {"packagist": false}
  21.     ]
  22. }

其中的autoload是為了支持我們自己項(xiàng)目的文件加載,其中sf下的是framework的code,而app下的是正常業(yè)務(wù)羅輯的code, 其中的repositories是為了解決在國內(nèi)使用composer下載,下載不下來的問題,如果在國外,或者有VPN做代理,可以直接去掉。

然后執(zhí)行composer install。

這樣基本的目錄結(jié)構(gòu)就構(gòu)建好了。

在入口文件public/index.php中,引入autoload文件,如下:

  
 
  1. require_once __DIR__ . '/../vendor/autoload.php';

然后我們定義我們的url是這樣的http://localhost/simple-framework/public/index.php?r=site/test,之后會加相應(yīng)的nginx或apache的rewrite,是url變簡潔好看,但暫時先這樣。

這個url訪問了SiteController中的actionTest,下面我們來簡單實(shí)現(xiàn)這個功能。

  
 
  1. require_once __DIR__ . '/../vendor/autoload.php';
  2. $router = $_GET['r'];
  3. list($controllerName, $actionName) = explode('/', $router);
  4. $ucController = ucfirst($controllerName);
  5. $controllerName = 'app\\controllers\\' . $ucController . 'Controller';
  6. $controller = new $controllerName();
  7. return call_user_func_array([$controller, 'action'. ucfirst($actionName)];

上面的code未添加任何的錯誤處理,只是一個簡單的功能實(shí)現(xiàn)。

然后在controllers文件夾中添加SiteController.php文件,內(nèi)容如下:

  
 
  1. namespace app\controllers;
  2. class SiteController
  3. {
  4.     public function actionTest()
  5.     {
  6.         echo 'success!';
  7.     }
  8. }

然后訪問之前的url http://localhost/simple-framework/public/index.php?r=site/test,你會看到打印出了success!

然后我們在來寫一個actionView方法去渲染一個頁面。actionView的代碼如下:

  
 
  1. public function actionView()
  2. {
  3.     $body = 'Test body information   ';
  4.     require '../views/site/view.php';
  5. }

我們還需要在views下面添加site文件夾,并在site文件夾下創(chuàng)建view.php文件,其內(nèi)容如下:

  
 
  1.     
  2.         title
  3.     
  4.     
  5.         
  6.     

最后訪問http://localhost/simple-framework/public/index.php?r=site/view,會得到如下頁面:

好了,今天就先到這里。項(xiàng)目內(nèi)容和博客內(nèi)容也都會放到Github上,歡迎大家提建議。

code:https://github.com/CraryPrimitiveMan/simple-framework/tree/0.1

blog project:https://github.com/CraryPrimitiveMan/create-your-own-php-framework


當(dāng)前題目:構(gòu)建自己的PHP框架--搭建基本結(jié)構(gòu)
轉(zhuǎn)載注明:http://uogjgqi.cn/article/cdhpjig.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流