F3-fatfree小型php框架教程(三)

以前說了不少路由的設定和使用,這裏首先說一下根目錄怎麼定(所謂的根目錄就是localhost的目錄)php

通常在安裝apache的時候都會有默認目錄,若是想改能夠用這個命令:html

php -S localhost:80 -t /var/www/

而後就會自動進入Index.php裏面找東西了(自動識別究竟是路由仍是文件夾) web


而後回頭說一下剛纔的reroute函數,這個函數是跳轉頁面用的,並且有個特殊用途,不會顯示源網頁!也就是說:apache

$f3->route('GET|HEAD /obsoletepage',
    function($f3) {
        $f3->reroute('http://www.anotherexample.org/');
    });

在瀏覽器地址欄顯示的是「/obsoletepage」而不是真實地址「http://www.anotherexample.org/」,也就是能夠起到隱藏地址的做用。能夠不讓用戶知道本身到底訪問的是那個真實地址,能夠用來搶瀏覽量之類的。還有一些壞壞的想法哦~這個就本身想吧~ 瀏覽器


還有一些要注意的是若是我要才傳遞一個參數GET /dogs/@breed,可是若是用戶輸入的是/dogs/那麼參數就沒輸進去了,可是系統也會默認參數爲空,這時就框架

須要咱們本身來寫一些報錯機制了函數

$f3->error(404);

F3有很好的自動讀取機制,會在你須要類的時候幫你讀取類,你大可沒必要寫一大堆include或者required來讀取不一樣文件夾和不一樣文件的php。這個問題黨會幫你解決的。你只須要把文件保存在文件夾裏而後一旦你想要調用對象裏的方法,你只要告訴框架去自動讀取適合的文件就能夠了:ui

$f3->set('AUTOLOAD','autoload/');

這個set函數有兩個參數,前面那個是定義‘AUTOLOAD’說明我要作的事情是自動讀取(這個set函數很吊,後面會繼續講解其餘功能),而後自動讀取的目錄是‘autoload/’至關於這個時候你已經進入這個目錄了。 spa

同時你也能夠設置多個自動路徑。code

$f3->set('AUTOLOAD','admin/autoload/; user/autoload/; default/');

這裏再次提醒一下,類的名字和文件的名字必須相同,這樣autoload才能夠一下從文件讀到類裏面。並且f3是不區分大小寫的,因此最好不要用同名的文件夾和文件。


下面要說說怎麼讀取一個路徑的文件:

加入我要讀取的是/var/www/html/autoload/gadgets/ipad.php

首先咱們定義的根目錄是/var/www/html/,而後

$f3->set('AUTOLOAD','autoload/');$obj=new Gadgets\iPad;

還有文件裏面的定義是:

namespace Gadgets;class iPad {}

裏面的Gadgets天然是與路徑的同樣的了,主要是方便autoload來識別,畢竟框架不區分大小寫。還要注意的是,這些路徑都要以斜槓/結尾:

$f3->set('AUTOLOAD','main/;aux/');

在講下面這個概念以前我要先講一下靜態和動態函數:

靜態函數:程序結束的時候纔會消失,一直佔用內存等待調用,不須要類的實例化就能使用。

動態函數:動態加載到內存中,不須要的時候就自動free,可是必需要先new一個類才能在類中被調用。

從字面上理解就是若是你只要這個函數而且要經常使用,用靜態,若是你要整個類的函數都涉及到調用,動態的


繼續講:

F3裏面的靜態和動態方法是怎麼調用的呢

靜態:

$f3->set('AUTOLOAD','classes/');$f3->route('GET|POST /','Main\Home::show');

動態:

$f3->route('GET|POST /','Main\Home->show');

classes/main/home.php都是裏面有個叫Main的namespace的,這就不詳細說了。這裏就是動態靜態調用show函數了

相關文章
相關標籤/搜索