- 浏览: 256610 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (238)
- linux (12)
- php (79)
- mysql (9)
- IIS (2)
- apache (5)
- javascript (16)
- jquery (4)
- DIV+CSS (13)
- sqlserver (13)
- window系统 (12)
- photoshop (2)
- fireworks (1)
- 网站性能测试 (2)
- 网络知识 (8)
- c# (3)
- flash game (0)
- 计算机英语 (4)
- python (7)
- 算法设计与思考 (0)
- 服务器配置 (3)
- Flex (2)
- 电脑硬件 (1)
- oracle (7)
- 软件工程 (1)
- c语言 (1)
- nginx (5)
- wordpress (1)
- coreseek (0)
最新评论
-
玲cc:
语言这东西不用就容易忘。。以前学了现在又差不多忘光了。。
python满足你需要的50个模块 -
huazhiyu1981:
了解python库函数必须要有的资料!
python满足你需要的50个模块 -
faroasis:
toLocale之类的方法在ie下取决于本地设置,不建议用来做 ...
js时间戳转为日期格式 -
hyl1234:
pydev不错,不过还没入门。谢lz
python满足你需要的50个模块 -
mirguest:
因此,我就写了下面这个代码:
#!/usr/bin/env ...
python类学习
把学习到的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(){
}
}
代码理论知识:
2 应用模块类的定义要继承框架的Action类。要为这个应用模块添加一个操作,则定义一个以此操作为命名的function.例如上面的index操作。 1 在/Tpl/default/下建立一个文件夹,根据应用模块的名称,我们将这个文件夹命名为Index 2 在/Tpl/default/Index/下建立一个html文件,根据操作名称,我们命名该文件为tpl.html 3 打开/Lib/Action/IndexAction.class.php文件,增加代码为 public function tpl(){ tpl.html文件为: <html> <head> <title>{$name}</title> </head> <body> 测试输出:{$name} </body> </html> 地址栏输入:http://thinkphp/index.php/Index/tpl 在html中,要输出$array['name']的值,代码是 {$array.name} 或 {$array['name']} tpl.html name='array'是指要循环的模板变量是array,id='vo'是指这个数据在模板输出时所使用的名称 如何在模板中使用运算符 配置格式 <?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 所需要的配置参数之外,开发人员可以在里面添加项目需要的一些配置参数,用于自己的应用。项目配置文件的位置默认位于项目的 Conf 目录。 2.项目配置 3.调试配置 5. 模块配置
1 在TP开发中,要增加一个应用模块,就在Action文件夹里建立一个类,类的文件命名格式是模块名称+Action.class.php。例如我们这里的应用模块是Index,所以定义文件名为IndexAction.class.php
在应有模块中,如果某个操作是需要页面显示的,只要对应在Myapp/Tpl/default/里建立一个文件夹,文件夹以应用模块的名称来命名,然后在这个文件夹下,建立一个以这个function名称来命名的html文件,就可以在这个方法中使用$this->display()方法来直接调用该模板
$value='hello thinkphp';
$this->assign('name',$value);
$this->display();
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
输出结果:
http://thinkphp/index.php/Index/tpl
?? 测试输出:??hello thinkphp
1 如果要同时输出多个模板变量,可以使用下面的方式:
$array = array();
$array['name'] = 'thinkphp';
$array['phone'] = '12335678';
$this->assign('array',$array);
$this->display();
<!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>
看到论坛有很多人在提问如何在模板引擎中使用运算符的问题,其实TP内置的模板引擎早就支持运算符的使用,只不过需要注意一些使用上的事项:
用法很简单:
ThinkPHP 框架中所有配置文件的定义格式均采用返回 PHP 数组的方式,格式为:
配置参数不区分大小写(因为无论大小写定义都会转换成小写)
但是习惯上保持大写定义的原则。
ThinkPHP 在项目配置上面创造了自己独有的分层配置模式,其配置层次体现在:
1.惯例配置
惯例重于配置是 ThinkPHP 的一个重要思想,系统内置有一个惯例配置文件(位于 Thinkphp\Common\convention.php ),按照大多数的使用对常用参数进行了默认配置。所以,对于应用项目的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件。
项目配置文件位于项目的配置文件目录(默认是 Conf )下面,文件名是 config.php 。
在项目配置文件里面除了添加内置的参数配置外,还可以额外添加项目需要的配置参数。
后面的开发指南中提及的配置参数设置如未特别说明,都是指在项目配置文件中定义
在Thinkphp\Common\convention.php决定是否开启调试模式,也可以在/Conf/config.php决定是否开启调试模式,('APP_DEBUG'=> false, // 是否开启调试模式)
4. 分组配置
分组配置用于系统启用了分组模式的情况之下,对于每个分组可以单独定义自己的配置文件。
分组配置文件位于:项目配置目录 / 分组名称 /config.php
分组配置的定义格式和项目配置是一样的。分组名称区分大小写。
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 控制器。
发表评论
-
zend解密工具
2013-07-05 15:00 1379dezend:http://www.old.necenzur ... -
window下nginx虚拟主机不能解析php
2011-12-19 15:30 1529本地window7配置nginx 1.011虚拟主机不能解析p ... -
[转载]防御远程表单提交
2011-12-14 15:17 977防御远程表单提交 <?php ses ... -
fck 添加字数统计
2011-08-23 18:17 810<div id="textCount&quo ... -
dede伪静态
2011-07-15 17:42 817一、dede后台开启伪静态 二、修改 /include/ta ... -
Error infos: DedeCms错误警告:连接数据库失败,可能数据库密码不对或数据库服务器出错!
2011-04-27 16:00 1847这是因为DedeCMS没有正确的和数据库服务器连接,出现问 ... -
php中的NULL字符
2011-04-11 14:40 893应该很多人都还没有认清空字符 串('')和NULL的关系吧! ... -
php mssql存储过程中的用到的预定义常量
2011-04-02 11:45 734php mssql存储过程中的用到的预定义常量,方便查询 ... -
php连接Oracle Database 10g Express Edition
2011-01-05 14:22 1226Oracle Database 10g Express Edi ... -
appserv2.5.10怪异
2010-12-20 14:30 1233同事使用include('http://')包含远程文件,本地 ... -
php缓冲区
2010-12-01 17:47 836<?php for ($i=0; $i<10; ... -
$_SERVER['SCRIPT_FILENAME']与__FILE__
2010-11-29 15:17 774假如web根目录:D:/web 先建立 d:/web/a.p ... -
zend framework初识并安装
2010-11-26 18:08 1304windows下 1。到官网下去下载zend framwor ... -
百度,google站内搜索
2010-11-22 09:06 838百度站内搜索:http://www.baidu.com/s?q ... -
我的文章被php100放在首页
2010-11-20 10:08 758今天无意中发下我的javaeye博客文章,竟然被php100放 ... -
Content-type大全
2010-11-12 10:13 832Description of Data Content ... -
php中的可变变量
2010-11-10 18:27 764感觉这个东西没什么多大作用,只会降低程序的可读性 <? ... -
phper分段,看看自己的位置
2010-11-08 11:22 8741 : 对PHPer的划分,我对P ... -
Xdebug MUST be loaded as a Zend extension in Unknown on line 0
2010-11-06 16:42 1683PHP Warning: Xdebug MUST be ... -
php中的斜杠/
2010-11-06 08:14 1200目录有些人喜欢补上斜杠 比如 $dir = dirname(_ ...
相关推荐
《ThinkPHP1.5版帮助手册》...这些文档内容全面且深入,无论你是刚接触ThinkPHP的新手,还是已经有一定经验的开发者,都能从中受益。通过学习和实践,你可以更好地掌握ThinkPHP1.5的特性和用法,提升你的PHP开发技能。
对于那些刚接触ThinkPHP的开发者来说,它是一个极好的学习资源,可以让他们了解如何处理常见的购物功能,如商品浏览、购物车管理、订单处理等。通过实践这个DEMO,学习者可以深入理解ThinkPHP的MVC(模型-视图-控制...
这个教程旨在帮助那些刚接触ThinkPHP或者对PHP web开发有兴趣的人快速入门,通过实际操作理解框架的核心概念和基本用法。 【描述】中的“提供一个以thinkphp作为框架的php留言板,简单易懂”意味着这个项目将展示...
《ThinkPHP3.2.2完全开发手册》是一份针对初学者详尽的教程,旨在帮助新接触ThinkPHP框架的开发者快速掌握其核心概念和应用技巧。ThinkPHP是中国较为流行的PHP开发框架,以其简洁的代码结构、强大的MVC模式、灵活的...
《ThinkPHP开发文档》是一份全面介绍ThinkPHP框架的资源集合,主要涵盖了ThinkPHP 2.0和2.1版本的相关知识。...无论你是初次接触ThinkPHP,还是已经有一定经验的开发者,这些资料都将对你的学习和工作带来极大帮助。
无论是对新接触ThinkPHP5.0的开发者,还是对框架进行深入研究的高级开发者,这本手册都是非常有价值的参考资料。由于手册内容详尽,本篇解读仅概述了手册中提及的几个关键知识点,对于想要深入了解ThinkPHP5.0的...
这两个文档的结合,使得无论你是刚刚接触Thinkphp的新手,还是希望深入理解框架的开发者,都能从中获得所需的知识和技能。通过学习,你可以有效地提高开发效率,构建出稳定、高效的应用程序。在实际工作中,熟练运用...
在 ThinkPHP 中,我们首先会接触到的是 MVC(Model-View-Controller)设计模式。MVC 分离了业务逻辑、数据处理和用户界面,使得代码更加模块化和易于维护。`Examples` 文件夹中的示例可能包括了 Model、View 和 ...
《基于ThinkPHP5的CMS详解》 在当今的互联网时代,内容管理系统(CMS)成为了许多企业和个人构建网站的首选工具,其便捷性与灵活性深受...无论是初次接触CMS还是熟悉ThinkPHP5,这个项目都将是一次有价值的探索之旅。
7. **用户认证**:如果留言版有登录功能,你还会接触到用户认证机制,如session或cookie的使用,以及如何处理用户登录和权限控制。 8. **错误处理与日志记录**:学习如何优雅地处理异常和错误,以及记录日志,以...
在实际操作中,你会接触到路由(Routing)的概念,它是ThinkPHP5中的一个重要特性。路由用于定义URL到控制器方法的映射,使得URL结构更清晰,同时也方便进行URL管理和重定向。ThinkPHP5支持多种类型的路由规则,包括...
3. **路由系统**:理解ThinkPHP5的路由规则,学习如何定义路由,以及路由参数的传递,同时会接触到RESTful API的构建。 4. **控制器与模型**:掌握控制器的创建与使用,理解模型的作用,以及如何在模型中操作数据库...
7. **文档支持**:`README.md`通常包含项目的简介、安装指南、快速入门等内容,是开发者初次接触项目的重要参考。 总的来说,ThinkPHP 5.0.24是一个强大的PHP开发框架,它通过优秀的架构设计和丰富的功能,降低了...
7. `新手必读.url` - 可能是一个链接文件,指向新手教程或使用指南,帮助初次接触此模板的用户快速上手。 8. `更多源码-制码站.url` - 同样是一个链接文件,可能是推荐的资源站点,提供更多的编程源码和学习资料。 ...
3. Blog:博客系统是许多初学者接触Web开发时的经典案例。这个模板可能包括了文章发布、分类、评论、搜索等功能,涵盖了数据模型设计、控制器逻辑、视图渲染等核心概念。 【标签】"许愿墙 Blog RBAC"进一步强调了...
同时,由于博客系统通常采用DIV+CSS布局,因此你还会接触到网页样式的设计与调整,以实现美观的用户界面。 许愿墙系统则是一个轻量级的社交应用,用户可以在上面发布自己的愿望,查看并回应他人的愿望。在Thinkphp...
在商城实战部分,你将接触到如商品管理、订单处理、支付集成、用户权限控制等核心模块。商品管理涉及商品分类、库存、价格、描述等信息的管理;订单处理则涵盖了从购物车到确认支付的完整流程,包括订单创建、状态...
描述中的关键词表明了这个项目适合刚刚接触Web开发的人群,尤其是对PHP和ThinkPHP框架感兴趣的新手。项目主要围绕文章管理展开,包括文章的创建、编辑、删除和展示,以及用户的评论和分享功能。这涵盖了Web开发中的...
【基于ThinkPHP开发的博客系统】是一个非常适合初学者入门的项目,它利用了ThinkPHP框架的3.1.3版本。...此外,还能接触到权限控制、表单验证等更高级的主题,为未来开发更复杂的Web应用打下坚实的基础。