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

来源:互联网 发布:java 与运算 编辑:程序博客网 时间:2024/04/28 20:06

之前说了很多路由的设定和使用,这里首先说一下根目录怎么定(所谓的根目录就是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函数了

























1 0
原创粉丝点击