我看有很项目中在完成一些数据库操作时用的是静态方法完成的。
就是说在ActiveRecord的子类里增加一个静态方法,然后再Controller里直接用 Class::function形式调取。
举个例子:
比如有个User类,对应数据库中User表,
Class User extends ActiveRecord
{
public static function addUser($username.$password)
{
//写一些sql插入这条记录
}
}
然后再Controller里直接用
User::addUser($username.$password)
这样的方式调用可以么?有不安全的地方么?因为我了解到的,静态方法是属于类的,如果两个请求同时调了这个方法,会冲突么?虽然我写了些测试代码,没有发生冲突的情况,但是我还是不放心,因为之前写别的的时候都是new 一个普通对象,然后调对象方法实现的,还没这么用过,不怎么放心。
另外就是 还有没其他的问题。
大家平时都怎么用的呢?
应该是两个参数吧:
个人觉得,不是说不能这么做,而是可以直接使用yii提供的增删改操作
使用原生sql语句:
要多看看文档:http://www.yiichina.com/doc/guide/2.0/db-active-record
框架这个东西,应该灵活应用,不是说就不能一定怎么做,一定就要那么做,没有这个硬性要求。
函数式写法,不建议学习
应该保持OO的写法,static fun意义不大,更多的我们会用这个思维来做一些tools
如果调用频繁可以考虑
$user = new User();
$user->createNew($user, $pass); //do pass encode and blabla in class instant.
我想你去理解下什么是MVC,这是一种思想,
数据打交道的教给M。C是控制逻辑,本来M要做的事,你给C做,虽然结果可行。但是脱离了MVC的思想