以前說了不少路由的設定和使用,這裏首先說一下根目錄怎麼定(所謂的根目錄就是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函數了