文档章节

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

诺灬晓月
 诺灬晓月
发布于 2014/09/12 00:13
字数 956
阅读 1073
收藏 0

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

本文转载自:http://blog.csdn.net/modiziri/article/details/22718811

诺灬晓月
粉丝 8
博文 20
码字总数 2067
作品 0
武汉
程序员
私信 提问
fatfree-f3小型php框架教程(四)

这里还有一个重要的说明, $f3->route('GET /','Main->home'); 这是一个动态的函数调用,但是在调用home函数之前,f3会寻找一个叫做beforeRoute()的函数并且调用它,如果你定义了的话。然后调...

诺灬晓月
2014/09/12
429
0
F3-fatfree小型php框架教程(五)

看到这里我想再写一个helloworld的程序,不过这次的程序需要调用htm来实现,首先我们知道fatfree主要是以php为引擎的,我们定义一个template.htm文件: <p>Hello, <?php echo $name; ?>!</p...

诺灬晓月
2014/09/12
206
0
fatfree-f3小型php框架(二)

我们的第一个例子不是太难懂吧,但是如果要做更多的功能与要求,我们就要在$f3 -> run()之前加一些别的路由: <span style="font-size:18px;">$f3->route('GET /about', function() { echo '......

诺灬晓月
2014/09/12
472
0
fatfree-f3小型php框架(一)

概要:f3 跟zend fleaphp 等框架不一样,f3 是一个小型框架,很适合新手学习和使用。f3框架 配备了一个快速的并且容易使用的模板引擎。f3 的model 同时与f3 的数据映射 和 sql 工具 用多样的...

穆子淼
2015/07/09
133
0
F3-fatfree小型php框架教程(六)数据库篇

既然是讲数据库的,那首先自然是连接数据库了。 这里举两个例子,mysql数据库: $db=new DBSQL( 'mysql:host=localhost;port=3306;dbname=mysqldb', 'admin', 'p455w0rD'); sqlite数据库: ......

诺灬晓月
2014/09/12
248
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
33分钟前
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部