thinkphp知识要点

1:thinkphp中实现URL隐藏功能

pathinfo配合服务器的的RewriterRule功能,从而实现隐藏index.php,在Apach中只要开启mod_rewrite模块即可

,然后配置网站中的.hessace文件(与入口文件同级)

修改如下:

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

</IfModule>

2:实例化模型的方法:

模型有数据库模型类(也称基类)还有自定义模型类

(1):new Model("数据表名“),使用传统的new 方式来实例化模型(基类),注意new方法不能实例化自定义的模型

(2):M(name=",class='Model',快捷函数实例化模型,参数name表示数据表名称,class表示自定义模型类,M函数可以再初始化数据表之后在市里画一个自定义的模型类

(3):D(name=",app="),D 函数专门用于实例化自定义模型,参数name表示模型名(不需要Model.class.ph):app 表示项目名,如果调用跨项目的自定义模型,那么该参数是必须的,为空时表示当前项目。

eg:$user=D('User')

$user=M(‘User','UserModel');

M函数的第一个参数表示数据表名,不能为空,第二个参数为自定义模型,如果载入自定义模型,该模型必须位于当前项目

3:模型初始化;由于在自定义模型中不能使用构造函数,所以在判断用户的优先级别和权限的时候有一定的困难,所以thinkphp中提供模型初始化函数_initialize()函数,该方法拥有最高的优先级,所有自定义的类中只要存在该方法,就会先运行该方法。该函数不仅可以在自定义模型中使用,在控制器中也可以进行调用,

4:控制器

thinkphp对控制器的访问是区分大小写的,而且首字母要大写,也可以在配置项中将URL_CASE_INSENSITIVE设置为true,既不区分大小写。在一个项目中通常要建立一个公共的控制器,使之继承自Action基类,这样的话如果要深入改动时只要改动公共控制器即可,其他的自定义控制器只要继承子公共控制器即可

5:display调用模板文件

(1):$this->display():指的是调用当前方法所对应的模板,如果要对应该方法中另外模板文件,只要指定相应的参数即可如:index方法中$this->display("home");则指的是Index文件中的home模板

(2):调用其他控制器动作模板

如Index控制器调用User控制器动作模板:$this->display("User:control");

(3):直接输出模板文件:即直接给出模板文件的路径:

$this->display("./Public/html/head.html");

6:控制器的调用

(1):A函数:用于实例化控制器,相当于new,不仅支持本项目内的控制器还支持跨项目控制器

class IndexAction extends Action{

  public function test(){

     $obj=A("Member");

     $obj->user();

   }说明实例化Member控制器,然后调用Member中的user方法

如果要调用不在当前控制器下的方法。则要使用”://"分隔符,如果项目中使用了分组方式,还需要在控制器前加上“/"分隔符,eg:class IndexAction extends Action(){
     public function test()

{

   $obj=A("Admin://Member");

   $obj->index();

}

7:R函数

R函数也是实例化控制器,但是更简洁:R('[项目名://][分组名/]模块名/操作名',array('参数1‘,参数2’))

eg:

class IndexAction extends Action()

{

  public function test(){ 

    R("Member/user");

}表示实例化当前项目Member控制器中的user动作

如需要调用跨项目的控制器:eg:

class IndexAction extends Action{

  public function test(){

  R("Admin://Member/user");

}

}



你可能感兴趣的:(thinkphp知识要点)