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

php中文网
发布: 2016-06-13 11:53:12
原创
1766人浏览过

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

之前说了很多路由的设定和使用,这里首先说一下根目录怎么定(所谓的根目录就是localhost的目录)

一般在安装apache的时候都会有默认目录,如果想改可以用这个命令:

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word">php -S localhost:80 -t /var/www/</code></span>
登录后复制
然后就会自动进入Index.php里面找东西了(自动识别到底是路由还是文件夹)


UQ云商B2B2C系统
UQ云商B2B2C系统

UQCMS云商是一款B2B2C电子商务软件 ,非常适合初创的创业者,个人及中小型企业。程序采用PHP+MYSQL,模板采用smarty模板,二次开发,简单方便,无需学习其他框架就可以自行模板设计。永久免费使用,操作简单,安全稳定。支持PC+WAP+微信三种浏览方式,支持微信公众号。

UQ云商B2B2C系统 1
查看详情 UQ云商B2B2C系统

立即学习PHP免费学习笔记(深入)”;

然后回头说一下刚才的reroute函数,这个函数是跳转页面用的,而且有个特殊用途,不会显示源网页!也就是说:

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">route</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'GET|HEAD /obsoletepage'</span>,<span class="whitespace">    </span><span class="function" style="color:rgb(255,20,147)">function</span>(<span class="variable" style="color:rgb(58,135,173)">$f3</span>)<span class="whitespace"> </span>{<span class="whitespace">        </span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">reroute</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'<span style="font-size:12px; line-height:22.049999237060547px; white-space:nowrap; background-color:rgb(247,247,249)">http://www.anotherexample.org/</span>'</span>);<span class="whitespace">    </span>}<span class="whitespace"></span>);</code></span>
登录后复制
在浏览器地址栏显示的是“/obsoletepage”而不是真实地址“http://www.anotherexample.org/”,也就是可以起到隐藏地址的作用。可以不让用户知道自己到底访问的是那个真实地址,可以用来抢浏览量之类的。还有一些坏坏的想法哦~这个就自己想吧~


还有一些要注意的是如果我要才传递一个参数GET [email protected],[email protected]?,但是系统也会默认参数为空,这时就

需要我们自己来写一些报错机制了

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">error</span>(<span class="lnumber" style="color:rgb(178,34,34)">404</span>);</code></span>
登录后复制

F3有很好的自动读取机制,会在你需要类的时候帮你读取类,你大可不必写一大堆include或者required来读取不同文件夹和不同文件的php。这个问题党会帮你解决的。你只需要把文件保存在文件夹里然后一旦你想要调用对象里的方法,你只要告诉框架去自动读取适合的文件就可以了:

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'AUTOLOAD'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'autoload/'</span>);</code></span>
登录后复制
这个set函数有两个参数,前面那个是定义‘AUTOLOAD’说明我要做的事情是自动读取(这个set函数很吊,后面会继续讲解其他功能),然后自动读取的目录是‘autoload/’相当于这个时候你已经进入这个目录了。

同时你也可以设置多个自动路径。

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'AUTOLOAD'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'admin/autoload/; user/autoload/; default/'</span>);</code></span>
登录后复制
这里再次提醒一下,类的名字和文件的名字必须相同,这样autoload才可以一下从文件读到类里面。而且f3是不区分大小写的,所以最好不要用同名的文件夹和文件。


立即学习PHP免费学习笔记(深入)”;

下面要说说怎么读取一个路径的文件:

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

首先我们定义的根目录是/var/www/html/,然后

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'AUTOLOAD'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'autoload/'</span>);<span class="whitespace"></span><span class="variable" style="color:rgb(58,135,173)">$obj</span>=<span class="new" style="color:rgb(255,20,147)">new</span><span class="whitespace"> </span><span class="string" style="color:black">Gadgets</span><span class="ns_separator" style="color:rgb(178,34,34)">\</span><span class="string" style="color:black">iPad</span>;</code></span>
登录后复制

还有文件里面的定义是:

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="namespace" style="color:rgb(255,20,147)">namespace</span><span class="whitespace"> </span><span class="string" style="color:black">Gadgets</span>;<span class="whitespace"></span><span class="class" style="color:rgb(255,20,147)">class</span><span class="whitespace"> </span><span class="string" style="color:black">iPad</span><span class="whitespace"> </span>{}</code></span>
登录后复制

里面的Gadgets自然是与路径的一样的了,主要是方便autoload来识别,毕竟框架不区分大小写。还要注意的是,这些路径都要以斜杠/结尾:

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'AUTOLOAD'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'main/;aux/'</span>);</code></span>
登录后复制
在讲下面这个概念之前我要先讲一下静态和动态函数:

静态函数:程序结束的时候才会消失,一直占用内存等待调用,不需要类的实例化就能使用。

动态函数:动态加载到内存中,不需要的时候就自动free,但是必须要先new一个类才能在类中被调用。

从字面上理解就是如果你只要这个函数并且要常用,用静态,如果你要整个类的函数都涉及到调用,动态的


立即学习PHP免费学习笔记(深入)”;

继续讲:

F3里面的静态和动态方法是怎么调用的呢

静态:

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">set</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'AUTOLOAD'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'classes/'</span>);<span class="whitespace"></span><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">route</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'GET|POST /'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'Main\Home::show'</span>);</code></span>
登录后复制
动态:

<span style="font-size:18px"><code style="padding:0px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:inherit; background-color:transparent; border:0px; word-wrap:break-word"><span class="variable" style="color:rgb(58,135,173)">$f3</span><span class="object_operator" style="color:black">-></span><span class="string" style="color:black">route</span>(<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'GET|POST /'</span>,<span class="constant_encapsed_string" style="color:rgb(178,34,34)">'Main\Home->show'</span>);</code></span>
登录后复制
classes/main/home.php都是里面有个叫Main的namespace的,这就不详细说了。这里就是动态静态调用show函数了



立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;


立即学习PHP免费学习笔记(深入)”;

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号