之前说了很多路由的设定和使用,这里首先说一下根目录怎么定(所谓的根目录就是localhost的目录)
一般在安装apache的时候都会有默认目录,如果想改可以用这个命令:
php -S localhost:80 -t /var/www/
然后就会自动进入Index.php里面找东西了(自动识别到底是路由还是文件夹)
然后回头说一下刚才的reroute函数,这个函数是跳转页面用的,而且有个特殊用途,不会显示源网页!也就是说:
$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。这个问题党会帮你解决的。你只需要把文件保存在文件夹里然后一旦你想要调用对象里的方法,你只要告诉框架去自动读取适合的文件就可以了:
$f3->set(‘AUTOLOAD‘,‘autoload/‘);
这个set函数有两个参数,前面那个是定义‘AUTOLOAD’说明我要做的事情是自动读取(这个set函数很吊,后面会继续讲解其他功能),然后自动读取的目录是‘autoload/’相当于这个时候你已经进入这个目录了。
同时你也可以设置多个自动路径。
$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函数了