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

Yiiframework为每个module单独指定db连接

Yii的module功能确实很方便,但现在的问题在于,我需要为每个module单独指定一个数据库连接,这样我就可以将不同的系统整合在一起了。找了不少资料,好象都没有这样类似的功能。master/slave之类倒是有不少类似的整合方案的。

测试了一下,发现可以这样操作,即在全局配置文件中的module里为module加上components中加上db,然后就基本OK了。但即使这样,你还是会发现不太正常,会提示db不存在,其实需要在这个db数组中加上class=>CDBconnection就一切OK了。会自动加载的哦。(烂桔在这里帮了不少忙)

然后数据连接就是Yii::app()->getModules('modulename')->db。【不过他在这里说的是findModules,我看了一下,getModules就直接可以用了。HOHO】

如果你有master和slave,也可以按照这样的配置,然后再在onBeforeFind方法里设定db=Yii::app()->getModules('module')->readerDb之类的。并在onAfterFind后再置 db为write的链接。(感谢HM提出方案)

如果有多个slave,又想使用同一个slave缓存,则可以先随机取得slave的名称。然后存入session,然后再指定链接。这样,每一个用户使用的slave就会是唯一的。其实提高了效率(感谢神仙提出来)

Tags: framework, yii, module

Yii documents

这两天一直在看Yii框架,也下载了一份API手册,却发现API手册里只有方法的介绍,却没有具体的调用方法,如果是纯方法的话,说实话,我还情愿用IDE的自动完成来查看呢。当然有个API手册在查询的时候会比较方便一点。

那么,有没有真正的manual呢?到官网的documentation分类去看了一下,NND,一堆 英文,不过,在我犀利的眼神下,还是发现了这玩意:The Definitive Guide to Yii ,点开一看,原来这才是类似于PHP手册的manual呀。可惜能够下载的只有PDF版本。更可恨的是,也只有英文版的,算了,将就点吧。。。虽然英文烂了点,一些简单的东西还是能够看得懂的。

如果初学Yii,还是建议看一下这个guide:The Definitive Guide to Yii ,它,有中文版,在:http://www.yiiframework.com/doc/guide/zh_cn/index

左边的树的目录也很清晰,值得一观,不过更建议的是多看一下:http://www.yiiframework.com/doc/guide/zh_cn/basics.application,我最初就是没看这个,一下子不知道如何调用Cache,都想在代码 new Cache之类的了。

--EOF--

后记:感谢烂桔推荐的:http://dreamneverfall.cn/yiidoc/index.htm,烂桔的网站为:http://iorange.cc

Tags: yii, 重构

Yii 笔记二

Yii的用户登录,如果不算上权限的话,恐怕真的是很简单的登录。
简单的判断,简单的处理一下就完事了。
但我今天还真的被简单的折腾了一下。
User登录,需要写几个地方
1、components目录下的UserIdentity.php中,需要加一个判断用户的方法,返回errorCode,当然没有错的话就返回0,这是常用ERROR_NONE
2、model目录下的loginForm,里面有简单的判断处理,如果登录成功,调用CWebUser中的login方法。起初的时候,我一直没找到Yii::app()->user是哪个类。。
3、由于Yii::app()->user->login方法的特殊性,因此,必须要在UserIdentity.php中设定好getId,getName,和states变量。当然最简单的就是判断是否取到用户数据,如果取到的话,直接$this->setPersistentStates($usermodel->getAttributes());如果没有id,name的变量,那么即使你登录了,还是会显示没有登录的。我就是在这里被折腾了好久。

over。。。

Tags: yii, 重构

初用Yii

Yii是在iorange的推荐下使用的,这两天我才刚刚在使用。做点笔记而己,没有其他

1、就象我在neatcn.com写的,创建项目非常简单,yii.bat这个命令就可以完成了。详细就在http://www.neatcn.com/show-57-1.shtml

2、项目目录中components中的文件,会在autoload中被引用,也只有这一个目录下的会被autoload,其他的都是有固定规范的。(不知道有没有理解错)

3、model目录下居然是tablemodel和form两种的集合,有点乱(官方的例子是这样的),不过想着form的validation也是用tablemodel来完成的,又能够理解这种做法,普通的tablemodel类继承cActiveRecord。

4、Controllers目录下是控制类,默认是SiteController,和其他框架默认是indexController有点不一样。继承自CController类。controller类中有一个layout的变量,可以设定layout。一般可以手工指定,如果同一个类里有不同的layout,估计还是要写个方法才行

5、Model的activeRecord返回的是对象,而不是象其他框架默认返回数组,因此取集合时要用getAttributes方法,当然,如果是只有一条数据,也可以直接$model->fieldname这样的方式来获取值 。

才学了这么一点,慢慢来吧。。重构路是漫长的。

Tags: yii, 重构

ThinkPHP经常会遗忘的事

使用THinkPHP框架开发程序,经常容易遗忘的事是什么呢?
1、app runtime没有及时更新
2、datamodel 缓存在更改表结构后没有刷新
3、数据缓存设定的时间太长。而在更改数据后没有主动刷新

4、模版缓存中的 include file 一般不会强制刷新。。

以上是开发注意事情,如果你发现改了一些设置或者其他什么后,死活不正常,请先检查以上四样。