自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

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

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

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

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

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

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

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

我們先建立一個(gè)目錄,然后進(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是什么,請(qǐng)查看composer。

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

 

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

 

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

 

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

 

其中的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. <?php 
  2. require_once __DIR__ . '/../vendor/autoload.php'

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

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

 

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

 

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

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

 

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

 

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

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

 

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

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

 

  1. <html> 
  2.     <head> 
  3.         <title>title</title> 
  4.     <head> 
  5.     <body> 
  6.         <?php echo $body;?> 
  7.     </body> 
  8. </html> 

 

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

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

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

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

責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2017-05-08 14:27:49

PHP框架函數(shù)框架

2009-12-09 10:34:54

PHP基本語法結(jié)構(gòu)

2020-09-01 13:10:42

JavaScript開發(fā) 技巧

2024-08-12 16:42:50

二進(jìn)制工具系統(tǒng)

2011-07-05 17:45:07

PHP框架

2010-03-25 15:52:51

Python程序

2021-08-09 20:30:17

開源框架頁面

2024-10-24 08:00:00

Web開發(fā)編程語言框架

2010-06-01 15:00:00

SVN倉庫

2021-07-25 21:28:55

人臉識(shí)別人工智能工具

2014-08-26 10:05:37

框架開發(fā)AngularJS

2017-02-05 09:13:58

PHP Cake框架構(gòu)建

2021-04-23 09:40:17

Vue插件框架

2009-06-25 14:51:15

開源PHP框架

2010-06-13 15:16:02

2009-07-09 13:45:06

Servlet基本結(jié)構(gòu)

2013-11-20 09:26:21

AngularJSJavaScript

2011-09-09 10:49:18

2023-07-30 17:34:53

KV存儲(chǔ)ChunkPosit

2014-07-30 09:35:36

DockerPaaS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)