`
chengxianju
  • 浏览: 256610 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

刚接触thinkphp

    博客分类:
  • php
阅读更多

把学习到的thinkphp知识记录一下

 

ThinkPHP默认使用UTF-8编码,所以请确保你的程序文件采用UTF-8编码格式保存,并且去掉BOM信息头(去掉BOM头信息有很多方式,不同的编辑器都有设置方法,也可以用工具进行统一检测和处理)。

 

过程中遇到这样问题:

Trace信息

当前页面 : /
模板缓存 : ./Runtime/Cache/0573c70d8602d961e53f714ea77bd87c.php
请求方法 : GET
通信协议 : HTTP/1.1
请求时间 : 2010-11-16 21:50:52
用户代理 : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; POTU(RR:28031409:0); .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Alexa Toolbar; .NET CLR 2.0.50727)
会话ID : 3d03dd0e650faf290ba54531bb60f582
日志记录 : 6条日志
[ 2010-11-16T21:50:52+08:00 ] NOTIC: [2] session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\thinkphp\index.php:1) ~runtime.php 第 2 行.
[ 2010-11-16T21:50:52+08:00 ] NOTIC: [2] session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\thinkphp\index.php:1) ~runtime.php 第 2 行.
[ 2010-11-16T21:50:52+08:00 ] SQL: RunTime:0.002662s SQL = SHOW COLUMNS FROM think_demo
[ 2010-11-16T21:50:52+08:00 ] SQL: RunTime:0.000422s SQL = SELECT * FROM `think_demo`
[ 2010-11-16T21:50:52+08:00 ] NOTIC: [2] Cannot modify header information - headers already sent by (output started at D:\thinkphp\index.php:1) ~runtime.php 第 2 行.
[ 2010-11-16T21:50:52+08:00 ] NOTIC: [2] Cannot modify header information - headers already sent by (output started at D:\thinkphp\index.php:1) ~runtime.php 第 2 行.
加载文件 : 18
[0] => D:\thinkphp\index.php
[1] => D:\library\ThinkPHP\ThinkPHP.php
[2] => D:\thinkphp\Runtime\~runtime.php
[3] => D:\library\ThinkPHP\Common\convention.php
[4] => D:\thinkphp\Conf\config.php
[5] => D:\thinkphp\Conf\routes.php
[6] => D:\library\ThinkPHP\Common\debug.php
[7] => D:\library\ThinkPHP\Lib\Think\Util\Dispatcher.class.php
[8] => D:\library\ThinkPHP\Lang\zh-cn.php
[9] => D:\thinkphp\Lib\Action\IndexAction.class.php
[10] => D:\library\ThinkPHP\Lib\Think\Core\Model.class.php
[11] => D:\library\ThinkPHP\Lib\Think\Db\Db.class.php
[12] => D:\library\ThinkPHP\Lib\Think\Db\Driver\DbMysql.class.php
[13] => D:\library\ThinkPHP\Lib\Think\Util\Template\TemplateThink.class.php
[14] => D:\library\ThinkPHP\Lib\Think\Template\ThinkTemplate.class.php
[15] => D:\library\ThinkPHP\Lib\Think\Template\TagLib\TagLibCx.class.php
[16] => D:\library\ThinkPHP\Lib\Think\Template\TagLib.class.php
[17] => D:\thinkphp\Runtime\Cache\0573c70d8602d961e53f714ea77bd87c.php

 

把文件改成无bom的utf-8信息,就不会报错了

 

TP中的每一个xxxAction.class.php文件代表着一个应用模块,此Action中的每一个方法(function)代表着一个操作,操作分为有输出到模板的操作和只具执行不需要输出的操作。

 

/Lib/Action/IndexAction.class.php文件,我们看看里面的基础代码
class IndexAction extends Action{

   public function index(){

    }

}
代码理论知识:


1 在TP开发中,要增加一个应用模块,就在Action文件夹里建立一个类,类的文件命名格式是模块名称+Action.class.php。例如我们这里的应用模块是Index,所以定义文件名为IndexAction.class.php

2 应用模块类的定义要继承框架的Action类。要为这个应用模块添加一个操作,则定义一个以此操作为命名的function.例如上面的index操作。


在应有模块中,如果某个操作是需要页面显示的,只要对应在Myapp/Tpl/default/里建立一个文件夹,文件夹以应用模块的名称来命名,然后在这个文件夹下,建立一个以这个function名称来命名的html文件,就可以在这个方法中使用$this->display()方法来直接调用该模板

 

1 在/Tpl/default/下建立一个文件夹,根据应用模块的名称,我们将这个文件夹命名为Index

2 在/Tpl/default/Index/下建立一个html文件,根据操作名称,我们命名该文件为tpl.html

3 打开/Lib/Action/IndexAction.class.php文件,增加代码为

 public function tpl(){
 $value='hello thinkphp';
 $this->assign('name',$value);
 $this->display();
 }

tpl.html文件为:
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

 <html>

 <head>

 <title>{$name}</title>

 </head>

 <body>

测试输出:{$name}

 </body>

 </html>

地址栏输入:http://thinkphp/index.php/Index/tpl
输出结果:
 http://thinkphp/index.php/Index/tpl
??        测试输出:??hello thinkphp


1 如果要同时输出多个模板变量,可以使用下面的方式:
$array = array();
$array['name']    =    'thinkphp';
$array['phone']   =    '12335678';
$this->assign('array',$array);
$this->display();

在html中,要输出$array['name']的值,代码是

{$array.name} 或 {$array['name']}

tpl.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>{$name}</title>
</head>
<body>
<iterate name="array" id="vo">
{$vo}<br />
</iterate>
</body>
</html>

name='array'是指要循环的模板变量是array,id='vo'是指这个数据在模板输出时所使用的名称

如何在模板中使用运算符
看到论坛有很多人在提问如何在模板引擎中使用运算符的问题,其实TP内置的模板引擎早就支持运算符的使用,只不过需要注意一些使用上的事项:
用法很简单:

配置格式
ThinkPHP 框架中所有配置文件的定义格式均采用返回 PHP 数组的方式,格式为:

<?php return array(

  'app_debug' =>  true ,

  'url_model' =>  2 ,

);?>
配置参数不区分大小写(因为无论大小写定义都会转换成小写)
但是习惯上保持大写定义的原则。

还可以在配置文件中可以使用二维数组来配置更多的信息,例如:

<?php return array(

  'APP_DEBUG' =>  true ,

'USER_CONFIG' => array(

              'USER_AUTH' =>  true ,

              'USER_TYPE' =>  2 ,

),

);?>


ThinkPHP 在项目配置上面创造了自己独有的分层配置模式,其配置层次体现在:

惯例配置 ->项目配置 -> 调试配置 -> 分组配置 ->模块配置 -> 操作(动态)配置

以上是配置文件的加载顺序,但是因为后面的配置会覆盖之前的配置(在没有生效的前提下),所以优先顺序从右到左。系统的配置参数是通过静态变量全局存取的,存取方式非常简单高效。

系统目前最多支持二维数组的配置级别,每个项目配置文件除了定义 ThinkPHP 所需要的配置参数之外,开发人员可以在里面添加项目需要的一些配置参数,用于自己的应用。项目配置文件的位置默认位于项目的 Conf 目录。

 
1.惯例配置
惯例重于配置是 ThinkPHP 的一个重要思想,系统内置有一个惯例配置文件(位于 Thinkphp\Common\convention.php ),按照大多数的使用对常用参数进行了默认配置。所以,对于应用项目的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件。

2.项目配置
项目配置文件位于项目的配置文件目录(默认是 Conf )下面,文件名是 config.php 。
在项目配置文件里面除了添加内置的参数配置外,还可以额外添加项目需要的配置参数。
后面的开发指南中提及的配置参数设置如未特别说明,都是指在项目配置文件中定义

3.调试配置
 在Thinkphp\Common\convention.php决定是否开启调试模式,也可以在/Conf/config.php决定是否开启调试模式,('APP_DEBUG'=> false, // 是否开启调试模式)


4. 分组配置
分组配置用于系统启用了分组模式的情况之下,对于每个分组可以单独定义自己的配置文件。
分组配置文件位于:项目配置目录 / 分组名称 /config.php
分组配置的定义格式和项目配置是一样的。分组名称区分大小写。

5. 模块配置
ThinkPHP 支持对某些参数进行动态配置,针对这一特性, ThinkPHP 还特别引入了模块配置文件的支持,这其实也是动态配置的体现。模块配置文件位于:
项目配置目录 / 模块名 ( 小写 )_config.php // 用于不使用分组的情况
或者 
项目配置目录 / 分组名 / 模块名 ( 小写 )_config.php // 用于使用分组的情况
模块配置文件的定义格式和项目配置相同。需要注意的是,有些配置参数在读取模块配置之前已经生效,因此可能会发生定义后不起作用的情况。


6.动态配置
之前的方式都是通过预先定义配置文件的方式,而在具体的 Action 方法里面,我们仍然可以对某些参数进行动态配置,主要是指那些还没有被使用的参数。
设置新的值:
C (' 参数名称 ' ,' 新的参数值 ' );
例如,我们需要动态改变数据缓存的有效期的话,可以使用
C (' DATA_CACHE_TIME','60');
动态改变配置参数的方法和读取配置的方法在使用上面非常接近,都是使用 C 方法,只是参数的不同。因此掌握 C 方法的使用对于掌握配置有着关键的作用。
也可以支持二维数组的读取和设置,使用点语法进行操作,如下:
获取已经设置的参数值:
C ('USER_CONFIG.USER_TYPE')
设置新的值:
C ('USER_CONFIG.USER_TYPE','1');

 


控制器
因此应用开发中的一个重要过程就是给不同的模块定义具体的操作。一个应用如果不需要和数据库交互的时候可以不需要定义模型类,但是必须定义 Action 控制器。

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    thinkphp1.5版帮助手册

    《ThinkPHP1.5版帮助手册》...这些文档内容全面且深入,无论你是刚接触ThinkPHP的新手,还是已经有一定经验的开发者,都能从中受益。通过学习和实践,你可以更好地掌握ThinkPHP1.5的特性和用法,提升你的PHP开发技能。

    thinkphp小型购物应用DEMO

    对于那些刚接触ThinkPHP的开发者来说,它是一个极好的学习资源,可以让他们了解如何处理常见的购物功能,如商品浏览、购物车管理、订单处理等。通过实践这个DEMO,学习者可以深入理解ThinkPHP的MVC(模型-视图-控制...

    供新手学习的thinkphp框架留言板

    这个教程旨在帮助那些刚接触ThinkPHP或者对PHP web开发有兴趣的人快速入门,通过实际操作理解框架的核心概念和基本用法。 【描述】中的“提供一个以thinkphp作为框架的php留言板,简单易懂”意味着这个项目将展示...

    ThinkPHP3.2.2完全开发手册

    《ThinkPHP3.2.2完全开发手册》是一份针对初学者详尽的教程,旨在帮助新接触ThinkPHP框架的开发者快速掌握其核心概念和应用技巧。ThinkPHP是中国较为流行的PHP开发框架,以其简洁的代码结构、强大的MVC模式、灵活的...

    ThinkPHP开发文档

    《ThinkPHP开发文档》是一份全面介绍ThinkPHP框架的资源集合,主要涵盖了ThinkPHP 2.0和2.1版本的相关知识。...无论你是初次接触ThinkPHP,还是已经有一定经验的开发者,这些资料都将对你的学习和工作带来极大帮助。

    thinkPHP5.0完整版手册

    无论是对新接触ThinkPHP5.0的开发者,还是对框架进行深入研究的高级开发者,这本手册都是非常有价值的参考资料。由于手册内容详尽,本篇解读仅概述了手册中提及的几个关键知识点,对于想要深入了解ThinkPHP5.0的...

    Thinkphp3.1.2使用开发文档既新手使用文档

    这两个文档的结合,使得无论你是刚刚接触Thinkphp的新手,还是希望深入理解框架的开发者,都能从中获得所需的知识和技能。通过学习,你可以有效地提高开发效率,构建出稳定、高效的应用程序。在实际工作中,熟练运用...

    thinkPHP 范例

    在 ThinkPHP 中,我们首先会接触到的是 MVC(Model-View-Controller)设计模式。MVC 分离了业务逻辑、数据处理和用户界面,使得代码更加模块化和易于维护。`Examples` 文件夹中的示例可能包括了 Model、View 和 ...

    基于thinkphp5的cms

    《基于ThinkPHP5的CMS详解》 在当今的互联网时代,内容管理系统(CMS)成为了许多企业和个人构建网站的首选工具,其便捷性与灵活性深受...无论是初次接触CMS还是熟悉ThinkPHP5,这个项目都将是一次有价值的探索之旅。

    学习 thinkphp 简单实用小程序

    7. **用户认证**:如果留言版有登录功能,你还会接触到用户认证机制,如session或cookie的使用,以及如何处理用户登录和权限控制。 8. **错误处理与日志记录**:学习如何优雅地处理异常和错误,以及记录日志,以...

    ThinkPHP5快速入门.zip

    在实际操作中,你会接触到路由(Routing)的概念,它是ThinkPHP5中的一个重要特性。路由用于定义URL到控制器方法的映射,使得URL结构更清晰,同时也方便进行URL管理和重定向。ThinkPHP5支持多种类型的路由规则,包括...

    ThinkPHP5快速入门 PDF格式.zip

    3. **路由系统**:理解ThinkPHP5的路由规则,学习如何定义路由,以及路由参数的传递,同时会接触到RESTful API的构建。 4. **控制器与模型**:掌握控制器的创建与使用,理解模型的作用,以及如何在模型中操作数据库...

    thinkphp_5.0.24_with_extend

    7. **文档支持**:`README.md`通常包含项目的简介、安装指南、快速入门等内容,是开发者初次接触项目的重要参考。 总的来说,ThinkPHP 5.0.24是一个强大的PHP开发框架,它通过优秀的架构设计和丰富的功能,降低了...

    thinkphp响应式少儿专业教育培训网站模板

    7. `新手必读.url` - 可能是一个链接文件,指向新手教程或使用指南,帮助初次接触此模板的用户快速上手。 8. `更多源码-制码站.url` - 同样是一个链接文件,可能是推荐的资源站点,提供更多的编程源码和学习资料。 ...

    黄永成老师 thinkphp 视频课程模板

    3. Blog:博客系统是许多初学者接触Web开发时的经典案例。这个模板可能包括了文章发布、分类、评论、搜索等功能,涵盖了数据模型设计、控制器逻辑、视图渲染等核心概念。 【标签】"许愿墙 Blog RBAC"进一步强调了...

    后盾网Thinkphp3.1.3视频教程资料Blog博客系统和许愿墙源码

    同时,由于博客系统通常采用DIV+CSS布局,因此你还会接触到网页样式的设计与调整,以实现美观的用户界面。 许愿墙系统则是一个轻量级的社交应用,用户可以在上面发布自己的愿望,查看并回应他人的愿望。在Thinkphp...

    布尔教育ThinkPHP商城实战视频源码课件(官方纯tp框架)

    在商城实战部分,你将接触到如商品管理、订单处理、支付集成、用户权限控制等核心模块。商品管理涉及商品分类、库存、价格、描述等信息的管理;订单处理则涵盖了从购物车到确认支付的完整流程,包括订单创建、状态...

    初学者用thinkphp写的一个有文章分享网站

    描述中的关键词表明了这个项目适合刚刚接触Web开发的人群,尤其是对PHP和ThinkPHP框架感兴趣的新手。项目主要围绕文章管理展开,包括文章的创建、编辑、删除和展示,以及用户的评论和分享功能。这涵盖了Web开发中的...

    基于thinkphp开发的博客系统 适合入门学习

    【基于ThinkPHP开发的博客系统】是一个非常适合初学者入门的项目,它利用了ThinkPHP框架的3.1.3版本。...此外,还能接触到权限控制、表单验证等更高级的主题,为未来开发更复杂的Web应用打下坚实的基础。

Global site tag (gtag.js) - Google Analytics