1、在开发时要打开调试模式,在入口文件中 define('APP_DEBUG',TRUE); 保证在开发阶段,每一项配置都是最新的。等网站上线后就要关闭注销掉。

2、Think里的打印函数:dump($result);

另一个打印数组方法:

echo "<pre>";
print_r($result); 

另外,还可以自定义函数 

function p ($array){
  dump($array , 1 , '<pre>' ,0);  
}

3、THINKPHP里的配置项主要在Conf里的convention.php文件里。

使用数据库时要注意配置项里存在一个 表前缀DB-PREFIX 要配置好才能顺利读取对应的表。

但是,我们一般不能直接在thinkphp框架里修改配置文件,而是在项目下的Conf里修改配置文件即可。

4、前端后端常用创建方法:

在think下建立前端index目录、后端Admin目录及index.php、Admin.php两个单入口文件。

缺陷是后端无法使用前端的配置文件,只能使用各自的或thinkphp框架的配置文件。

解决方法:为了省去同一个配置项在前端和后端反复配置,出现重复代码。我们再建立一个公用Conf文件夹,里面添加config.php文件,在该文件里配置前后端公用的配置项。然后,在前后端各自的config.php里合并配置项。

//前、后台的config.php
$config = array(
  'DB_HOST' => 'localhost'
);
return
array_merge(include './Conf/config.php',$config);

5、添加扩展函数库,在Common目录下,创建common.php(必须这样命名才能被读取)在里面就可以添加自定义常用函数了。

@ 符号代表当前项目下的Common文件夹。@.common 代表Common文件夹下的common.php文件。

**

如果函数扩展库不命名为common.php,而要命名为比如function.php,想要调用该函数库有两种方法:

一种是在配置文件里设置 'LOAD_EXT_FILE' => 'function'

另一种是在调用该函数库时,临时加载 load('@.function'); 就会把整个函数库都添加进来,就可以使用内部函数。不过这种方法只在当前方法内部有效,其他方法均无效

**

6、问题:模版显示与模版替换 里的路径设置没听明白!

7、url里的路径设置:

localhost/wish/index.php/Index/index/uid/1 

index.php后面的第一根斜线是IndexAction控制器,第二根斜线后是控制器里的index方法,然后是GET参数,设置uid的值为1。相当于设置 $_GET['uid']=1。

[_URL_]是一个数组

[_URL_] =>Array{

  [0] => Index

  [1] => index

  [2] => uid

  [3] => 1

}

8、U函数自动组合url地址。

U('Index/index') = /wish/index.php/index/index.html

【静态后缀名 .html (可在配置文件中设置 'URL_HTL_SUFFIX' => 'html';也可以在U函数里面设置)】

使用U函数设置GET参数 和 临时后缀名 和 是否跳转(0、1)和 是否要显示域名

U('Index/show', array('uid'=>1) , 'asp' , 1, true);

http://127.0.0.1/wish/index.php/show/index/uid/1.asp

跳转到Index控制器下的show方法,并且附带GET参数uid=1,设置后缀为asp。

 8.1 配置URL地址显示方式

  'URL_MODEL' => 0 , 则 U('Index/index',array('uid'=>1)) = wish/index.php?m=index&a=show&uid=1

 

  'URL_MODEL' => 1 , 则就是上面的url格式

  'URL_MODEL' => 1 , 就可以省略输入index.php

8.2 以后使用url地址,我们最好使用U函数来生成,可直接配置URL_MODEL来改变url格式

比如,在 <a></a>超链接中插入url地址: 

<a href='{:U('**')}'></a>

 

9、 I 函数 自动从GET或POST中获取变量值 I('uid'),则不需要利用$_GET $_POST来获取

I('get.')表示GET数组

I('post.')表示POST数组

防止脚本注入:echo I('username', ' ', 'htmlspecialchars'); 即使username是脚本代码也不会被执行。

直接使用I('username')的话,如果username的内容是一个javascript脚本,则会自动执行。

10、IS_POST常量可用来判断表单是否已向全局变量post已提交数据。

11、404方法显示错误页面: _404('页面不存在',U('index'));

若为调试模式,则发生错误时也会显示错误信息。

然后还会跳转回同一目录下的index方法。

 12、处理表单数据插入数据库

使用数据库时要注意配置项里存在一个 表前缀DB-PREFIX 要配置好才能顺利读取对应的表。

public function handle(){
    if(!IS_POST) _404('页面不存在',U('index')); //判断表单是否通过POST提交数据
    
    $data = array(
             'username' => I('username','','htmlspecialchars'), //直接从post中获取对应表单的值
             'content' => I('content','','htmlspecialchars') ,
             'time' => time() 
    ) ;
    
    if(M('table')->data($data)->add()){  //直接将该数组插入到数据表table中
         $this->sucess('发布成功',U('index'));
    }//插入成功
    else{
       $this->error('发布失败,请重试。。。');
    }
}    

然后为了使用数据库mysql,要在项目配置项中添加配置项,index/Conf/config.php:

<?php
return array(
    'DB_HOST' => '127.0.0.1',
    'DB_USER' => 'root',
    'DB_Pwd' => '',
    'DB_NAME' => 'think',
    'DB_PREFIX' => 'hd_',

);
?>    

12.1mysql删除操作

M('table')->where('id>0')->delete();

M('table')->where(array('id' => array('gt',0)))->delete();

12.2 mysql查询操作

M('table')->select();

 

13、html标签foreach解析成php

<foreach name='wish' item='v'>

</foreach>

对于wish变量中的所有键值对里的值$v 进行遍历使用

解析成php:

<?php foreach($wish as $key => $v) ;?>

<?php endforeach;?>

14、将time()得到的时间戳转换成24小时格式显示

time=time();

time|date='y-m-d H:i',###

其中,###自动替换|前面的对象

 

posted on 2014-08-02 18:01  lanxian  阅读(260)  评论(0编辑  收藏  举报