亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
Minor【 PHP框架】3.路由、控制器、視圖,minor框架
首頁 後端開發(fā) php教程 Minor【 PHP框架】3.路由、控制器、視圖,minor框架_PHP教程

Minor【 PHP框架】3.路由、控制器、視圖,minor框架_PHP教程

Jul 12, 2016 am 08:49 AM
php框架

Minor【 PHP框架】3.路由、控制器、視圖,minor框架

3.1 路由

  漂亮的URL絕對是一個嚴肅的web應用程序必須做到的,這種方式使index.php?article_id=57這類的丑陋URL被隱藏,由更受歡迎的像 /read/intro-to-symfony 來替代。

  3.1.1 路由配置

  配置文件為app/Config/routes.php

<?<span>php
</span><span>return</span><span> [
  </span>'/demo/{productName}'            =><span>  [
        </span>'name'                =>    'test1',
        'controller'        =>    'App\Modules\Demo\Controller\FooController',
        'action'            =>    'bar',
        'required'          =>  ['productName' => '\w+'],<span>
    ]</span>,<span>
];</span>

  以上邊代碼為例詳述一下如何配置一個優(yōu)雅(laravel病上身...)的路由

  '/demo/{productName}'是路由的匹配規(guī)則,其中配置中的required制定的就是productName必須滿足的正則條件,在框架的實際運行過程中會將路由規(guī)則+required解析為正則表達式/demo/(\w+) ,當url(eg: xxx.xxx.xxx/demo/testproduct)匹配到這條正則時就會執(zhí)行配置中的controller的action,具體的執(zhí)行為:FooController->bar($productName);

  可以看到路由規(guī)則中的大括號的內容(productName)就是就是bar這個方法的參數(shù)。所以在匹配路由時一定要注意路由規(guī)則必須與具體的控制器的方法的參數(shù)個數(shù)是一致的,不然就會拋出ControllerException。

  3.1.2 默認路由配置

  如果我們每定義一個Controller就要配置一個路由就會導致開發(fā)效率較低,為了防止這種問題發(fā)生Minor提供了默認路由機制。當我們訪問http://xxx.xxx.xxx/demo/foo/bar時就會執(zhí)行App\Modules\Demo\FooController的bar方法,即默認路由為:

  http://xxx.xxx.xxx/{模塊名}/{控制器名}/{方法名}

  3.1.3 缺點

  正如你所見,Minor的路由并不強大。不支持請求方法的限制,不支持htttps限制,不支持過濾器。

3.2 控制器

  3.2.1 創(chuàng)建一個自己的控制器

  Controller的定義非常簡單,只要繼承Minor\Controller\Controller基礎類就可以了(當然你也可以不繼承,但是基類中的方法和屬性就不能使用了,這很好理解),首先創(chuàng)建文件夾app/Modules/Demo/Controller/,然后再創(chuàng)建文件FooController.php:

<?<span>php
namespace App\Modules\Demo\Controller;

</span><span>use</span><span> Minor\Controller\Controller;
</span><span>//</span><span> 定義一個控制器</span>
<span>class</span> FooController <span>extends</span><span> Controller
{
    </span><span>//</span><span> 定義一個方法   </span>
    <span>public</span> <span>function</span><span> bar()
    {
        </span><span>return</span> 'Hello World'<span>;
    }
}</span>

  通過訪問xxx.xxx.xxx/demo/foo/bar(默認路由,你也可以配置自己的路由)就可看到返回了Hello World。

  3.2.2 Url生成

  調用Url的gen方法可以將默認路徑轉為符合路由規(guī)則的url

<span>$url</span> = Url:gen(<span>$path</span>);

  如根據(jù)3.1.1中的路由配置Url::gen('/demo/foo/bar?productName=test') 將返回 /demo/test。

  

  3.2.3 頁面跳轉redirect、重定向forward

  Minor提供了三個跳轉的方法分別是redirect、forward、forwardUrl(這三個都是Minor\Controller\Controller的protected方法)。

  當跳轉到另外一個url時可以在控制器這樣調用:$this->redirect($url);

  當轉向(froward)到另外一個url時可以在控制器中這樣調用: $this->forwardUrl($url);(該方法的實現(xiàn)其實就是通過路由解析出url請求的控制器和方法然后調用forward($controller, $action, $param))

  當轉向(forward)到另外一個方法時可以在控制器中這樣調用: $this->forward($controller, $action, $params); (參數(shù)$controller是控制器的類名,包含命名空間)

  例:

<span>class</span> FooController <span>extends</span><span> Controller
{
    </span><span>public</span> <span>function</span><span> bar()
    {
        </span><span>$this</span>->redirect('www.baidu.com'<span>);
        </span><span>return</span> <span>$this</span>->forward('App\Modules\Demo\Controller\FooController', 'bar', 'test'<span>);
        </span><span>return</span> <span>$this</span>->forward('/demo/testpro'<span>);
    }
}    </span>

  3.2.4 獲取請求參數(shù)

  調用MinorRequest的get($paramName, $defaultParamValue = null) 或者 post($paramName, $defaultParamValue = null)方法就可以獲取請求方法,在控制器中可以這樣調用:

<span>class</span> FooController <span>extends</span><span> Controller
{
    </span><span>public</span> <span>function</span><span> bar()
    {
       $minorRequest = <span>$this->app->getMinorRequest()</span>; </span><br />    $paramValue = <span>$minorRequest</span>->get('paramKey', 'defaultValue'<span>);<br />    ...
    }
}   </span>

  3.2.5 獲取請求方法

  調用MinorRequest的getMethod()方法就可以獲取請求的方法:

<span>class</span> FooController <span>extends</span><span> Controller
{
    </span><span>public</span> <span>function</span><span> bar()
    {
       </span><span>$minorRequest</span> = <span>$this</span>->app-><span>getMinorRequest(); 
    </span><span>$method</span> = <span>$minorRequest</span>-><span>getMethod();
    </span>...<span>
    }
}  </span>

3.3 視圖

  Minor提供了一個極其強大的模板引擎,這個模板引擎的名稱就是: PHP。是的!你沒看錯就是PHP。為什么Minor不提供一個類似于smarty或者Twig這樣的模板引擎呢? 因為沒有必要,PHP本身已經足夠好了,如果Minor再造一個模板引擎無疑就會使Minor更難上手,所以Minor直接使用PHP作為視圖文件的語言。

  3.3.1 在控制器中使用視圖

  在控制器中使用視圖只需要調用View::render('模塊名:控制器名:視圖文件名', ['param1key' => 'param1value', 'param2key' => 'param2value' ...]);例:

<span>class</span> FooController <span>extends</span><span> Controller
{
    </span><span>public</span> <span>function</span><span> bar()
    {
        </span><span>$param1</span> = 'Hello'<span>;
        </span><span>$param2</span> = 'World'<span>; 
        </span><span>return</span> View::render('Demo:Foo:bar.php', ['param1' => <span>$param1</span>, 'param2' => <span>$param2</span><span>]);
    }
}  </span>

  render函數(shù)的第二個參數(shù)(['param1key' => 'param1value', 'param2key' => 'param2value' ...])就是向視圖文件中傳遞的變量,我們可以在視圖文件中使用這些變量:

文件:app/Modules/Demo/Controller/Tpl/Foo/bar.php<br /><?php echo $param1key;?><br /><?=$param2key ?>

  3.3.2 視圖內置函數(shù)

  Minor提供了兩個視圖文件中可以使用的函數(shù):

<span>function</span> include_tpl(<span>$module</span>, <span>$controller</span>, <span>$tpl</span><span>)
{
    </span><span>require_once</span> (!<span>defined</span>('APP_DIR') ? APP_DIR : <span>realpath</span>(__DIR__ . '/../../app/') .DIRECTORY_SEPARATOR) . 'Modules' . '/' . <span>$module</span> . '/Tpl/' . <span>$controller</span> . '/' . <span>$tpl</span><span>;
}

</span><span>function</span> url(<span>$path</span><span>)
{
    </span><span>return</span> Url::gen(<span>$path</span><span>);
}</span>

  使用:

<span>html>   
    </span><span><?</span><span>php include_tpl('Public', 'Public', 'header.php');</span><span>?></span> 
    <span><</span><span>body</span><span>></span>
        <span><</span><span>h1</span><span>></span>Hello!<span></</span><span>h1</span><span>></span>
        <span><</span><span>a </span><span>href</span><span>="<?php url('/demo/foo/bar?productName=testpro');?>"</span><span>></span>
    <span></</span><span>body</span><span>></span>
<span></</span><span>html</span><span>></span>

  這兩個函數(shù)定義在app/Resource/functions.php文件中,你可以在這個文件中自定義你需要的視圖函數(shù)。

 

3.4 響應

  可以在控制器中通過調用App對象的getMinorResponse()方法來獲取當前MinorResponse對象?!inorResponse類提供了六個方法分別是:

<span>public function send(); // 用于將響應對象發(fā)送給客戶端

public function setHeader($header);// 設置響應頭

public function setContent($content); // 設置響應對象的內容

public function beforeContent($content); // 在當前已有的內容之前添加內容

public function appendContent($content); // 在當前已有內容之后追加內容

public function getContent(); // 獲取對象中的響應內容</span>

?

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1135100.htmlTechArticleMinor【 PHP框架】3.路由、控制器、視圖,minor框架 3.1 路由 漂亮的URL絕對是一個嚴肅的web應用程序必須做到的,這種方式使index.php?article_id...
本網(wǎng)站聲明
本文內容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP框架的優(yōu)缺點比較:選哪個好? PHP框架的優(yōu)缺點比較:選哪個好? Jun 04, 2024 pm 03:36 PM

PHP框架的選擇取決於專案需求和開發(fā)者技能:Laravel:功能豐富,社群活躍,但學習曲線陡峭,效能開銷高。 CodeIgniter:輕量級,易於擴展,但功能有限,文件較少。 Symfony:模組化,社群強大,但複雜,效能問題。 ZendFramework:企業(yè)級,穩(wěn)定可靠,但笨重,許可昂貴。 Slim:微框架,速度快,但功能有限,學習曲線陡峭。

在不同開發(fā)環(huán)境中 PHP 框架的效能差異 在不同開發(fā)環(huán)境中 PHP 框架的效能差異 Jun 05, 2024 pm 08:57 PM

不同開發(fā)環(huán)境中PHP框架的性能存在差異。開發(fā)環(huán)境(例如本地Apache服務器)由于本地服務器性能較低和調試工具等因素,導致框架性能較低。相反,生產環(huán)境(例如功能齊全的生產服務器)具有更強大的服務器和優(yōu)化配置,使框架性能顯著提高。

PHP框架與微服務:雲(yún)端原生部署與容器化 PHP框架與微服務:雲(yún)端原生部署與容器化 Jun 04, 2024 pm 12:48 PM

PHP框架與微服務結合的好處:可擴展性:輕鬆擴展應用程序,添加新功能或處理更多負載。靈活性:微服務獨立部署和維護,更容易進行更改和更新。高可用性:一個微服務的故障不會影響其他部分,確保更高可用性。實戰(zhàn)案例:使用Laravel和Kubernetes部署微服務步驟:建立Laravel專案。定義微服務控制器。建立Dockerfile。建立Kubernetes清單。部署微服務。測試微服務。

PHP框架與DevOps的整合:自動化與敏捷性的未來 PHP框架與DevOps的整合:自動化與敏捷性的未來 Jun 05, 2024 pm 09:18 PM

將PHP框架與DevOps整合可提高效率和敏捷性:自動化繁瑣任務,釋放人員精力專注於戰(zhàn)略任務縮短發(fā)布週期,加快上市時間提高代碼質量,減少錯誤增強跨職能團隊協(xié)作,打破開發(fā)和運營孤島

PHP框架與人工智慧:開發(fā)人員指南 PHP框架與人工智慧:開發(fā)人員指南 Jun 04, 2024 pm 12:47 PM

使用PHP框架整合人工智慧(AI)以簡化AI在Web應用程式中的集成,建議框架:Laravel:輕量高效,功能強大。 CodeIgniter:簡單易用,適用於小型應用程式。 ZendFramework:企業(yè)級框架,功能完善。 AI整合方式:機器學習模型:執(zhí)行特定任務。 AIAPI:提供預先建置功能。 AI庫:處理AI任務。

哪種 PHP 框架提供最全面的擴充函式庫,方便快速開發(fā)? 哪種 PHP 框架提供最全面的擴充函式庫,方便快速開發(fā)? Jun 04, 2024 am 10:45 AM

PHP框架擴充庫選擇提供了四種框架:Laravel:以其龐大的生態(tài)系統(tǒng)和第三方套件而著稱,提供認證、路由、驗證等擴充。 Symfony:高度模組化,透過可重複使用的「Bundle」擴展了功能,涵蓋身份驗證、表單等領域。 CodeIgniter:輕量級且高效能,提供資料庫連接、表單驗證等實用擴充。 ZendFramework:企業(yè)級功能強大,擁有身分驗證、資料庫連線、RESTfulAPI支援等擴充功能。

PHP框架在敏捷開發(fā)和大型專案的應用 PHP框架在敏捷開發(fā)和大型專案的應用 Jun 04, 2024 pm 01:42 PM

PHP框架在敏捷開發(fā)和大型專案中應用廣泛,提供敏捷性、可擴充性和安全性等優(yōu)勢。例如,在電子商務網(wǎng)站中,Laravel框架可快速建立原型、處理複雜業(yè)務邏輯、確保安全性和擴充功能。透過利用預先定義的元件和設計模式,PHP框架為開發(fā)人員建立可擴展且維護良好的應用程式提供了便利。

PHP框架與Python框架的比較 PHP框架與Python框架的比較 Jun 05, 2024 pm 09:09 PM

PHP和Python框架在語言特性、框架生態(tài)和特徵上有所不同。 PHP主要用於Web開發(fā),易於學習;Python具有廣泛的庫生態(tài)系統(tǒng)。流行的PHP框架包括Laravel、CodeIgniter、Symfony;Python框架包括Django、Flask、Web2py。在實戰(zhàn)案例中,Laravel使用命令列產生部落格模型和視圖,而Django使用DjangoAdmin和Python腳本創(chuàng)建部落格。

See all articles