構建自己的PHP架構--搭建基本結構_PHP教程

來源:互聯網
上載者:User

構建自己的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. {
  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. }

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

 
  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下的是正常業務羅輯的code, 其中的repositories是為瞭解決在國內使用composer下載,下載不下來的問題,如果在國外,或者有VPN做代理,可以直接去掉。

然後執行composer install。

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

在入口檔案public/index.php中,引入autoload檔案,如下:

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

然後在controllers檔案夾中添加SiteController.php檔案,內容如下:

 
  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檔案夾下建立view.php檔案,其內容如下:

 
  1. title

最後訪問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

http://www.bkjia.com/PHPjc/1051851.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1051851.htmlTechArticle構建自己的PHP架構--搭建基本結構 首先,我們來說一下,為什麼要建立自己的架構? 為什麼要建立自己的架構呢?如果你跟周圍的人討論,...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.