手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:thinkphp

浅谈TP的COOKIE类

TP的COOKIE类是被封装好的,里面包含了一些常见的操作,set,get,clear等等,其实TP的cookie类与其他的COOKIE有着明显的不同,那就是TP的COOKIE ID是唯一的(不好意思,在我写完这段的时候,为了防止写错,我又重新打开了cookie.class.php,却突然发现,现在的cookie功能与以前的不一样了。)

以前的set函数是类似于这样:

PHP代码
  1. $_COOKIE[C('COOKIE_ID')][C('COOKIE_PREFIX').$name] = $value ;  
如今的又恢复成:
PHP代码
  1. $_COOKIE[C('COOKIE_PREFIX').$name]  =   $value;  

既然如此,我还是按最新的稍作讲解吧。。。

Cookie类,固名思意,就是把对COOKIE的操作进行了封装,通过定义一个COOKIE名的前缀,以防与其他COOKIE产生冲突,然后加上COOKIE变量的名称,就可以进行赋值、取值等。

Cookie类所有的操作都采用了静态方法,即在实际应用中,只要加载了Cookie类,就可以随时使用了:

PHP代码
  1. <?  
  2. //假设cookie 前缀为 'neatcn_'  
  3. Cookie::get('test');  
  4. //return $_COOKIE['neatcn_test'];  
  5.   
  6. Cookie::set('test','123456');  
  7. //return setcookie('neatcn_test','123456',xxx,xxx,xxx);  
  8. //xxx是默认定义的常量,如默认COOKIE的过期时间,作用域等  
对于这些封装,可以方便使用,同样需要注意的是,在Cookie操作时,请不要输出header,否则可能会出现header already send的warning,同时无法写cookie,这点请需要注意。

另外一个需要注意的是,cookie在不同的浏览器下面有着不同的限制,最常见的就是cookie的长度,请尽量不要超过4K的字节。

参考资料:

FF浏览器
  1. * 一个 Cookie 档案最多只能包含 300 个 Cookies。(这只适用于 Netscape,因为它把所有的 Cookie 都放在一个档案。)  
  2. * 每一个 Cookie 的大小不得超过 4KB。  
  3. * 每一个 URL 路径,最多只能设定 20 个 Cookie。  

Tags: thinkphp, cookie, class

ThinkPHP怎么样更好的使用Smarty第三方插件

如果你在使用ThinkPHP框架的时候不想采用TP自带的模版系统,而使用第三方的模版系统,你有很多其他的选择,在这里我仅介绍Smarty这种比较官方,而且比较强大的模版系统。

由于Smarty兼容PHP4,因此,它的效率会相对低一点点,这个低只是相对的,估计等Smarty啥时候正式放弃PHP4的时候,效率可能会上很大一个台阶。

………………………………………………

最多请看全文。

» 阅读全文

Tags: smarty, thinkphp

为ThinkPHP开发自定义标签几个注意事顶

ThinkPHP的模版引擎强大就强大在于它可以使用XML标签来为TP模版引擎进行扩展,因此TP的标签功能就成了TP模版的亮点所在。要想让TP的模版功能更加强大,你就得学会扩展TP的标签功能,即:自定义标签

开发自定义标签功能的时候,有几个注意的地方,
1、文件名的规范性,这个当然是不用多解释了,TagLibInput.class.php
    (TagLib加是你定义的标签名,首字符大写,这样你的文件名中的Input就会自动认为你的XML文件名)
2、目录所在:目前暂时还是存放到THINKPHP的核心类库里,目录为:/THINKPHP/Lib/Think/Template
    主程序文件放到:/THINKPHP/Lib/Think/Template/TagLib/ 目录下
    自定义的XML文件放到:/THINKPHP/Lib/Think/Template/Tags/ 目录下

    (自定义的文件是小写的标签名,即刚才类名中的Input的小写)

注意事顶:
    如果你发现你自定义的标签没有被解析,请按如下方法进行检查(以input标签为例)
    1、查看文件开始的地方是否加载了<tagLib name="cx,html,input" />,同时,请检查是否符合XML规范,如:标签一定要闭合。例:<br />,否则会出现XML解析错误
    2、检查文件是否都为UTF-8编码,因为在解析XML的时候,都是采用UTF8编码,如果不是UTF8编码,会出现一些奇怪的解析错误,很多时候都会出现simpleXml解析器错误,如果出现这种错误,请检查文件编码,如果是UTF8编码的文件,请同时检查文件头是否存在BOM标记。
    3、自定义的标签中,是否忘了双引号。由于在写HTML的时候,很容易忽略双引号,比如<input type=text name=name>,如果是这样,在被当成XML解析的时候,肯定会报错的,正确的写法应该是:<input type="text" name="name" value="value" />(标签要闭合),如果是自己自定义的标签,则应该这样写:<input:text name="" value="" />

Tags: thinkphp, 标签

解决使用ThinkPHP框架自带模版程序处理<??>出现的问题

使用ThinkPHP自带的模版引擎处理模版问题时,一般情况下不会有什么问题。

但是,在处理一些XHTML模版时,可能会遇到以下问题,比如,模版作者在制作模版时,为了规范页面,往往在文件头部加上<?xml version="1.0" encoding="utf-8"?>,表明文件是属于XML规范,所有的标签都必须遵循XML的相关规定。

然而,默认的ThinkPHP模版引擎在处理的时候会出现错误,处理这个错误的情况有以下几种办法。

第一种方法:你尝试关闭PHP的短标签功能
第二种方法:试着用<literal></literal>标签把XML的标签包含起来,即
<literal><?xml version="1.0" encoding="utf-8"?></literal>

 

第三种方法:修改ThinkPHP/Lib/Think/Template/ThinkTemplate.class.php的compiler函数,在函数的最后一行return $templContent;前加入

PHP代码
  1. // 将<?标签用echo方式输出   
  2. $tmplContent = preg_replace('/(<?(?!php|=|$))/i''<?php echo '\1'; ?>'."n"$tmplContent );   

任何一种方法理论上都可以,第一种第二种方法实在不行的时候,再用第三种,毕竟第三种方法是改动核心的,如果以后更新核心库,可能会不当心就覆盖掉了。

不过,流年说过了,他已经更新了模板引擎的解析类,并且专门判断了是否开启了短标签,如果开启的话会自动用第三种方法解析。更新下SVN的ThinkTemplate.class.php 文件就可以了(可能压缩包还没有同步更新[2008-04-22])。

 

Tags: thinkphp, template, 短标签

ThinkPHP两周年,同时有新的更新


官方的话:
新年的气氛即将恢复平静,ThinkPHP也快2岁了,这是一个让所有关注和支持ThinkPHP的朋友们值得祝贺的时刻,官方也准备了一份礼物以回馈大 家的支持,感谢大家和ThinkPHP风雨同舟一起度过。届时将开通ThinkPHP官方在线体验中心,给大家送上丰富的示例和演示,而且还将发布一个更 新版本,包含了值得期待的项目目录自动创建功能和众多的完善。新手们有福了,呵呵~希望2008奥运年大家红红火火,继续努力!
  PS:了解ThinkPHP发展历史的人应该猜到2周年是什么时候了,呵呵~

目前,官方还推出了新的示例中心,网址是:http://exp.thinkphp.cn/Examples/

» 阅读全文

Tags: thinkphp, 框架

Records:2112345