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',###
其中,###自动替换|前面的对象