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

thinksns 不再开发了?

ThinkSNS是基于ThinkPHP框架开发的一款SNS程序,原本以为还是相对不错的程序,一些小的BUG也还能够接受,但听到这个消息(不再继续开发)后,心里哇凉哇凉的。

本来我也不知道的,但是在偶尔看discuz的uchome时,发现了这个投票,投票地址为:http://u.discuz.net/home/space-1293758-do-poll-pid-2017.html,内容大致如下:

XML/HTML代码
  1. RT,大家都知道,SNS即将过去.曾经我们离开过,去年我们团队又回来了,但是我们发现现在的网络形式已经不同了。因此我们不得不再次将 THINKSNS项目再次停止开发,将精力转向微博,细心的朋友会发现我们已经在开发微博了,大家可以看77661.CN。目前进行到V0.2版本,并且此版将在下周一前提供下载。新版演示可以参考Couxing.com  

 

看到这个投票,心里能不哇凉哇凉吗?看来以后更加不敢用这些个人作品了。除非是以公司运作的、或者开源但功能完整,BUG不多的。

因为相对于thinksns来说,我投入的精力和修改BUG也花了不少精力,当初thinksns说改用thinkphp2.0开发的时候,本来还想着激动一下,结果,干脆说不开发了。唉。。现在的百思家网站用户中心就是采用了这个thinkSNS,改动了很多功能,不再一一列出,主要还是由于是商业网站不太适合改动,我仅说一点小小的吧,那就是博客的分类与相册的分类整合(而且还是用的另外的表,并非他原先的表结构)。

想来想去,最多到6月份左右,我想我还是会回到UCH上面吧?基于几个原因:

  1. 官方不再开发,而小BUG太多
  2. 冗余代码太多,无法细细清除
  3. theme更换的时候,必须要cleancache,否则无效(因此,在任何情况下,也只能拥有一套皮肤)
  4. 原始模版写的有点糟糕,可能是赶时间写的。。。改一个小地方,都要同时改4、5个模版

Tags: thinksns, thinkphp

框架开发一点小注意事项

一般来说,FORM我们都是用POST方式提交的,但也有需要GET方式提交的表单.这种情况出现最多的就应该是Search了。。
如果没有采用框架,那么我们的搜索POST的action就可能是 search.php了。而如果采用框架,并且是单入口的框架,这样的Action地址往往可能是index.php?module=search&action=titlesearch之类。但如果你真的这样把这个URL放到action里面提交,你会发现,你所有的参数都扔到index.php?module=index&action=index这样的页面里去了。

这是为什么呢?其实就是因为form中,如果method是GET方式,它是不接受url后面带参数的,而是把form里的元素自己组成get参数进行传递。所以,如果需要用到get方式,请手动在表单中使用隐藏域把module和Action等赋值进去。

但凡是也有例外,单入口的PHP,如果使用pathinfo模式,好象就能 够规避这种问题,比如我的URL是index.php/module/search/action/titlesearch/这时候,框架就能够被正常接收了。原理嘛。。。。黑黑,自己想想喽。

其实我这篇勃客只是做个笔记而己,因为在做thinksns第三方开发的时候,想使用get方式做查询的时候遇到了这个问题,而thinksns的url_mode用的是兼容模式,所以就出现了这种情况。事后已经向流年提起,流年好象是说过在thinkphp的框架中想法改进一下url_mode=3,兼容模式下存在的这种问题。

或许,现在的SVN上,它已经改掉了吧?可惜我用的thinksns不能随便更新核 心,真痛苦。

Tags: thinksns, thinkphp

初用thinkphp的widget

widget最早的应用应该是vista了。。但WEB上的就说不准谁是最早应用的。。。

ThinkPHP从很早的版本里就有支持了,但,我却一直没有用过,依稀记得yblog在用widget的时候,好象ThinkPHP那时候还没有正式支持。。

我这次使用,其实也算是个意外,在对thinksns二次开发的时候,有些页面需要经常重用,不得己,只能使用widget了。

随便看了一下,如果仅仅只是用来显示一些简单的页面,那么widget还是很方便的就能够被使用了。thinkphp2.0的手册中也有介绍。。

最简单的用法莫过于在Lib目录下,新建一个widget目录。然后放上一个class文件,最后附上一个基本同名的模版就行了。。

PHP代码
  1. <?php  
  2.   
  3. class RightSlideWidget extends Widget  
  4. {  
  5.     function render($data){  
  6.         return $data;  
  7.     }  
  8. }  
在同目录下放置一个RightSlide.html就行了。。该html的解析与你使用的模版引擎有关,一般情况下,还是使用TP的模版了。。

在正式的模版中使用【我是指使用TP的情况下】,直接{:W('RightSlide',array('data'=>1))}就可以了。

很简单吧。

Tags: thinkphp, widget

TP单字母函数整理

这是一篇TdWeb的笔记,在征得他的同意后,我放了上来。他最初是为Lite版本写的,但现在这些单字母函数在标准版里也都同样存在了。因此这些资料在两个版本的ThinkPHP中都同样适用。由于Tdweb偷了点懒,部分代码都是直接复制过来的,所以,我稍做了一下整理(主要是页面样式的稍做更新,同时对于部分语句进行了一些更新,tdweb莫生气)
原文网址:http://bitctw.cn/hl/docs/
原文如下:(我仅针对单字母函数作介绍)

  TP所有单独的函数,除了两个用来生成项目的buildAppDir之类的,其余都在框架目录/Common/functions.php这个文件里。

  有人不太喜欢TP这种单字母函数,其实这也是TP的一个特色,如果理解了这些函数的作用,不管是背,还是写,都是非常方便的,接下来我们以字母顺序开始。

A函数(基本是Action的简写)

  A函数是用来实例化我们的Action类的,例如我们的程序有2个Action分别是IndexAction和TestAction,在 IndexAction中有个myHello方法能够输出hello world,如果我也想在TestAction中也输出同样一段文字怎么办?最原始的方法首先我们导入IndexAction.class.php这个文 件,然后new IndexAction,最后调用myHello方法才行。

代码一般为 :

PHP代码
  1. <?php  
  2. import("@.Action.Index");  
  3. //导入本项目目录下Action目录下的Index.class.php文件。  
  4. class TestAction extends Action{  
  5.     public function index()  
  6.     {  
  7.         $index=new IndexAction();//实例化IndexAction  
  8.         echo $index->myHello();//调用myHello()方法  
  9.     }  
  10. }  
  11. ?>  

那么,如果我们用A函数,怎么写呢?

PHP代码
  1. <?php  
  2. class TestAction extends Action{  
  3.     public function index()  
  4.     {  
  5.         $index=A("Index");  
  6.         echo $index->myHello();  
  7.     }  
  8. }  
  9. ?>  

  呵呵,少写很多代码吧。当然,这还不是最偷懒的方法,请看下边的R()函数,就知道什么是偷懒的极致了。

B函数

  这是随着行为应运而生的新生函数,可以执行某个行为,例如B('app_begin');就是在项目开始之前,执行这个行为定义的所有函 数,支持2个参数,第二个参数支持需要接受一个数组,例如B('app_begin',array("name"=>"tdweb","time"=>time()));这样。

C函数

  获取配置值,这个大家用的应该不少。虽然使用方便,但是C函数无疑是一个非常强大的函数。

获取值:  
获取所有设置:C(); 不传递任何参数,返回一个包含所有设置的数组。
获取指定配置:C('URL_MODEL') 这样就能得到URL_MODEL的配置信息
获取指定二维数组配置:C("array.name"),这样就返回数组array下的key为name所对应的值

设置值:
为二维数组赋值C("array.name","value"),原理同上(获取array.name的值),后边的value是值

批量赋值:
$test=array("URL_MODEL"=>1,"THIN_MODEL"=>true");
C($test);
这样直接将数组里的值赋值了

判断是否赋值:
C("?URL_MODEL")这样前边加个"?",如果已经赋值,则返回true

  需要说明的是,这里虽然更改了配置的值,但是仅仅是这个页面做了更改,到下个页面就不起作用了,如果想改就永久更改,那么需要配合F函数,将配置文件写入config.php才行。

D函数

  DAO函数应该是我们写程序用的最多的函数了。和A函数类似,如果不使用D函数,就需要导入Model,然后new Model,剩下都是一样的。

  但是D函数有2个有点,一是如果之前实例化过这个Model,那么就不再实例化了,剩资源;二是方便调试,如果不存在 这个Model,会抛出TP异常,非常人性化。

  如果访问本项目的Model直接D("Model名称");就可以了,如果打算跨项目访问,就使用 D("Model名称","项目名称");其他的就没什么说的了

F函数

  快速读取和保存文件数据

  快速保存数据:F("mydata","这里是要保存的数据"),这样就在项目Data目录下保存了一个名叫mydata.php的文件,里边的内容是该函数的第二个参数。

  指定保存时间 :F("mydata","这里是要保存的数据","60"),这样,如果下次再访问,间隔大于60秒则删除次缓存文件。

  指定保存目录:F("mydata","这里是要保存的数据","60",DATA_PATH) ,这样就指定保存在data目录下

  立即删除缓存:F("mydata",null),第二个参数传递一个null值,这样就删除了mydate这个缓存

  读取缓存数据:F("mydata"),这样就读取这个缓存了

L函数

  语言定义函数,L("intro")获取定义成intro的语言,l("intro","介绍")为intro赋值,关于这个赋值的长久性,道理同C函数一样。

R函数

  还记得我们的A函数吧,如果仅仅想执行某个方法,其实用R函数更方便,刚才的可以替换成

PHP代码
  1. <?php  
  2. class TestAction extends Action{  
  3.     public function index()  
  4.     {  
  5.         $index=R("Index","myHello");  
  6.         echo $index;  
  7.     }  
  8. }  
  9. ?>  

 呵呵,是不是更简单?

S函数

  全局缓存读写函数,和C类似,不过是直接写成文件的哦,写在Temp目录下,不过在缓存有一点需要注意,如果缓存名称是aaa,那么缓存生成的文件名称就是md5("aaa")的值,值得注意。

U函数

  U函数是很强大的一个函数,它主要是进行URL组装,同时支持不同模式和路由

例如:
取得当前模块的Action地址 :U("/nowMethod");
取得当前模块的Action地址,并传递参数:U("/nowMethod?params=test");

  (如果不习惯上边那种方式,可以使用U("/nowMethod",array("params"=>"test");这样的数组方式传递参数,效果是一样的)

  访问其他模块的方法:U("Other/otherMethod"),这样就是访问Other模块下的otherMethod方法
跨项目访问:U("appname://Other/otherMethod");
使用路由访问:U("appName://routeName@moduleName/actionName?params");

  另外,如果想直接跳转,那么就在第二个参数写1,例如U("/nowMethod",1);这样就直接调转到指定URL了

  好了,介绍了TP的9大函数,相信你或多或少也有些了解了吧。如果想了解更多更好的功能,请看function.php的代码,注释很详尽

 

稍微排版了下,也删了点不太和谐的内容,希望可以给大家带来帮助。。

Tags: thinkphp, 单字母, 函数, 整理

ThinkPHP发布1.5Lite版

一大早流年就在群里说发布了Lite版本,但是我还没有欣赏一下具体的代码,好象这个版本的想法是用Yhustc那里冒出来的,因为他的Yblog就自行对ThinkPHP 1.5进行了简化只保留了常用的功能,比如:数据库只支持MYSQL(也是,这个博客程序只用MYSQL,其他的一些驱动就可有可无了)。于是流年在这个想法的基础上,花了几天时间进行了Lite的构造。(估计几天的休息时间就这么没有了吧)

官方原文:http://www.thinkphp.cn/Blog/25

发布该版本的原因是很多应用开发要求较高的性能并且不需要很多特殊的功能

Lite版本提供网站开发最需要的功能,优化性能,更适合大型项目!

[ 功能列表 ]

编译缓存
自动生成
异常处理
URL模式
语言包支持
模板主题支持
空模块和空操作
前置和后置操作
智能数据表识别
自动加载
标签库
类库导入
Vendor支持
ADSL方法
跨库操作
字段映射
URL组装
URL伪静态
原生SQL操作
多数据库连接和切换
分布式数据库支持
支持MySql和PDO
惯例配置
项目配置
动态配置
模块配置
静态缓存
动态缓存
模板引擎和扩展支持
日志处理
SQL日志
调试模式
运行时间显示
页面Trace
类库扩展
自动验证
自动完成
CURD基本
AR模式基本
连贯操作

[ 注意事项 ]
去掉了ORG类库包(自己可以增加扩展)
保留文件缓存驱动
保留内置模板引擎和PHP模板引擎驱动
查询条件只支持字符串
CURD接口和数据库接口已经更改(和标准版不兼容)
视图模型和关联操作已经去掉
模型的数据操作保留了 add save delete find query execute 增加了select方法 并做了参数的调整
去掉了自动获取数据表字段信息 改由模型自己定义或者不定义
保留运行信息和页面Trace显示
去掉了URL路由功能(该部分功能可以用空模块和空操作取代)

[ 下载Lite版本 ]

Lite版本适合对TP有一定了解的开发人员,并且有PHP开发经验和足够的扩展能力。

Tags: thinkphp, lite

Records:2112345