首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CModel vs CFormModel vs CActiveRecord

CModel vs CFormModel vs CActiveRecord
EN

Stack Overflow用户
提问于 2012-10-07 04:50:38
回答 4查看 6.4K关注 0票数 5

我正在用yii构建一个数据库密集型应用程序。因此,性能和安全性自然是一个值得关注的问题。除此之外,验证也是一个主要的标准。为了安全起见,我计划对所有Sql查询使用参数绑定。对于验证,我想使用Yii提供的验证器,而不是我自己的验证器。我意识到CActiveRecord的性能会受到影响。因此,我计划为我所有的表创建Cmodel类,在这些相应的模型中定义验证规则,并定义函数来执行sql查询以检索和插入数据。我在网站上的所有数据收集主要是通过表单(大约95%),如果我使用Cformmodel,我不是真的理解Cmodel和Cformmodel之间的区别,使用这两种方式是否会影响性能。

另外,为了防止XSS攻击,我想使用HTML purify包装器作为验证规则,因为我几乎到处都看到这个包装器的性能很差,即使我使用它作为验证规则,它也会很糟糕吗?我是否应该使用Chtml::Encode显示我的输出文本,即使我正在净化输入?

我处理数据的粗略计划是:

代码语言:javascript
复制
    $users= new Users() ; //Users is extending CModel , contains validation rules 
    $users=getdata(Yii->app->userid()) ; 
    if(isset('update'))
    {
        if($users->validate())
            {$users->updatedata() ; }
    }

$this->render('users','data'=>$users) 
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-07 06:07:36

CFormModel继承自CModel,CModel只是一个泛型模型类,使用CFormModel没有性能差异,如果您不打算使用CActiveRecord,这将更适合您的应用程序。

对于“执行sql查询的函数”,希望你指的是存储过程,否则不会有很大的性能提升,即使这样,编写自己的SQL查询只用于插入和检索单个模型也没有太大帮助。我的建议是,你应该关心以后的性能。一旦你真的有了需要改进的东西。

净化输入它与编码不同,使用HTML purify您可以消除有害的html,以防止XSS或其他您不想允许的标记。但是字符串仍然可以包含(‘),例如。而CHtml::encode所做的只是生成HTML等效项,这样您就可以得到html实体了。

票数 4
EN

Stack Overflow用户

发布于 2012-10-08 13:02:28

我已经发布了一个链接到yii论坛,在那里你可以找到最佳答案。

Yii Forum Link

CModel模型类是CFormModelCActiveRecord的基础。

当我们对数据库的表执行CRUD操作时,需要使用CActiveRecord,并需要根据它们定义变量。

当我们不需要CRUD操作而是像登录表单这样的逻辑操作时,就会使用CFormModel。在这里,我们没有为模型使用任何表。

票数 3
EN

Stack Overflow用户

发布于 2013-01-24 23:58:10

这就是所谓的过早优化综合症,因为你用早期的和不必要的优化阻碍了你的开发。

首先使用最好的模型/模式开发您的应用程序,然后再寻找瓶颈和提高性能、加载时间等方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12763763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档