日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
構(gòu)建自己的PHP框架--搭建基本結(jié)構(gòu)

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

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

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

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

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

  • 因為樂趣而試著寫一個框架(為了“學習然后拋棄”的目的)

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

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

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

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

我們先建立一個目錄,然后進入該目錄

  
 
  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": "sunguangjun@126.com"
  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": "sunguangjun@126.com"
  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是為了支持我們自己項目的文件加載,其中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,下面我們來簡單實現(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未添加任何的錯誤處理,只是一個簡單的功能實現(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,會得到如下頁面:

好了,今天就先到這里。項目內(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


名稱欄目:構(gòu)建自己的PHP框架--搭建基本結(jié)構(gòu)
本文地址:http://m.5511xx.com/article/cdhpjig.html