一个web程序 最少有 应用目录 php框架目录 入口文件
一个项目可以有多个应用和多个入口文件,但是一个入口只对应一个应用。
比如一个留言板项目 包括前台的Applicatin目录和入口index.php文件以及Admin目录和Admin.php入口组成的后台应用。
这两个应用都属于留言板项目
除了runtime目录。其他的每个目录都是一个模块。Common模块比较特殊。Controller文件夹中形如xxxController.class.php的文件就是一个控制器,每个控制器的public方法都是action动作。
配置文件的加载顺序是
右边的配置会覆盖左边的配置
公共配置在Application/Common/Conf/Config.php中
模块配置在Application/modulexxx/Cong/config.php中
路由一般分为 动态 静态 伪静态
动态 www.xxx.con/news/view.php?id=10
比如以asp php asp.net jsp结尾 然后后面戴? = &传递参数。
静态 www.xxx.con/news/view.php/id/10.html
伪静态是URL看起来像 静态的url.但是实质上是动态的。
Thinkphp支持
1普通模式
2pathinfo模式
3rewrite模式
4兼容模式
普通模式和兼容模式是动态url。rewrite和pathinfo模式区别在于有没有index.php。rewrite模式web服务器
会往web目录下的home/index/index查找默认首页。如果存在发送给浏览器。否则就是404
路由配置 首先是要启动路由功能
在通用配置app/Common/Conf/config.php中配置URL_ROUTER_ON=true
模块配置文件中配置URL_ROUTE_RULES进行配置。
路由一般定义是
"路由表达式 "=>"路由地址和参数"
或者 array("路由表达式","路由地址","传入参数")
Thinkphp只要匹配到一条默认的,那就终止匹配
前面就是通过:进行参数匹配
比如posts/:year/:month/:day 将后面的第一个变为参数year 第二个变为参数month 第三个变为day
静态路由不包含任何参数。效率比较高。用URL_MAP_RULES定义
4
控制器定义 xxxController.class.php 位于模块/Controller下就会自动加载。
比如继承Controller;
如果定义了一个方法是 关键字比如 php里面的list 那么就会出错这个时候需要action后缀
然后所有的function带上这个Action后缀就行。
为了审计方便。提供了 _before_ _after_在方法执行的前后调用
4.3 打开参数绑定以后 URL_PARAMS_BIND 以后。不需要用$_GET获取参数了。
比如Home/Index/bind/id/1
就获取了 id 是1 .有时候也要默认参数。 funciont bind($id=1) 这样访问 Home/Index/bind/id/就不会报错
4.4伪静态
配置URL_HTML_SUFFIX可以设置伪静态后缀。
4.5 windows上不区分大小写linux上区分。可以用URL_CASE_INSENSITEIVE配置
4.6 使用U函数产生 不同的URL模式
U产生的URL是根据URL_MODEL来的。
4.8 重定向 是Controller中的方法
跳转
跳转使用的模板可以修改
4.9 通过内置函数判断是否是 对应的方法。因为有时候需要根据不同的方式处理不同的逻辑。
例如
4.10 处理输入 用户的输入可能是不可信的。所以需要过滤等等。用 I 函数实现
4.11空操作 当php找不到方法会调用_empty方法 找不到控制器会调用EmptyController.class.php