成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

構建自己的PHP框架--搭建基本結構

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

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

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

  • 了解更多框架的底層架構

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

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

  • 想利用新的開發技術以及最佳實踐重構已經存在的項目

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

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

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

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

 

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

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

  1. mkdir controllers models views public 

public用來存放統一的入口,在里面建立index.php,大部分框架現在都是單一入口。

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

在simple-framework文件夾下執行 composer init,然后填寫相應內容,生成一個composer.json文件,其內容大概如下:

 

  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": {} 

 

讓后修改以下,結果如下:

 

  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是為了支持我們自己項目的文件加載,其中sf下的是framework的code,而app下的是正常業務羅輯的code, 其中的repositories是為了解決在國內使用composer下載,下載不下來的問題,如果在國外,或者有VPN做代理,可以直接去掉。

然后執行composer install。

這樣基本的目錄結構就構建好了。

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

 

  1. <?php 
  2. require_once __DIR__ . '/../vendor/autoload.php'

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

這個url訪問了SiteController中的actionTest,下面我們來簡單實現這個功能。

 

  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未添加任何的錯誤處理,只是一個簡單的功能實現。

然后在controllers文件夾中添加SiteController.php文件,內容如下:

 

  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,你會看到打印出了success!

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

 

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

我們還需要在views下面添加site文件夾,并在site文件夾下創建view.php文件,其內容如下:

 

  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,會得到如下頁面:

好了,今天就先到這里。項目內容和博客內容也都會放到Github上,歡迎大家提建議。

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

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

責任編輯:王雪燕 來源: 博客園
相關推薦

2017-05-08 14:27:49

PHP框架函數框架

2009-12-09 10:34:54

PHP基本語法結構

2020-09-01 13:10:42

JavaScript開發 技巧

2024-08-12 16:42:50

二進制工具系統

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開發編程語言框架

2010-06-01 15:00:00

SVN倉庫

2021-07-25 21:28:55

人臉識別人工智能工具

2014-08-26 10:05:37

框架開發AngularJS

2017-02-05 09:13:58

PHP Cake框架構建

2021-04-23 09:40:17

Vue插件框架

2009-06-25 14:51:15

開源PHP框架

2015-10-26 13:41:41

Aleax查詢服務

2011-09-09 10:49:18

2013-11-20 09:26:21

AngularJSJavaScript

2023-07-30 17:34:53

KV存儲ChunkPosit

2012-11-13 11:29:51

Ubuntu

2014-07-30 09:35:36

DockerPaaS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产最好的av国产大片 | 国产区在线视频 | 在线观看黄色电影 | 国产一二三区电影 | 欧美在线一区二区三区 | 欧美一级二级视频 | 亚洲精品一区二区三区蜜桃久 | 日本精品在线观看 | 久久免费视频1 | 国产一区二区精品 | 亚洲欧美激情视频 | 精品影院 | 中文字幕第十页 | 免费国产精品久久久久久 | 久久久美女 | 欧美视频三区 | 黄色片网此 | 操操日| 国产欧美精品一区二区三区 | 一级a性色生活片久久毛片波多野 | 中文字幕亚洲视频 | 国产视频中文字幕 | 国产在线一区二区三区 | 99在线视频观看 | 欧美日本亚洲 | 色www精品视频在线观看 | 黄色免费av | 日韩精品在线看 | 日本午夜视频 | 亚洲色图综合 | 欧美日本韩国一区二区 | 免费一区二区 | 国产精品久久 | 玖玖视频网 | 天天看天天操 | 91秦先生艺校小琴 | 亚洲色欲色欲www | 欧美日韩视频在线播放 | 91精品国产综合久久久久久漫画 | 97久久精品午夜一区二区 | 天天干b |