Cakephp最佳实践

时间:2013-10-16 21:18:39

标签: php cakephp cakephp-2.0 cakephp-appmodel

我对CakePHP中的最佳做法有疑问!

让我们假设以下情况:

在收据模型中,我有代码:

public function beforeValidate()
    {
        $this->data[$this->name]["client_id"] = CakeSession::read("Auth.User.id");
        $this->data[$this->name]["date"] = date('Y-m-d H:i:s');

        $receipt    = $this->data[$this->name]["receipt"];
        $cod_filial     = substr($receipt, 0, 3);
        $qtdade_cupom   = substr($receipt, 12, 2);
        $tipo_pagamento = substr($receipt, 14, 1);

        $this->data[$this->name]["cod"] = $cod_filial;
        $this->data[$this->name]["quantity"] = $qtdade_cupom;
        $this->data[$this->name]["payment_type"] = $tipo_pagamento;
        $this->data[$this->name]["is_valid"] = null;


        return true;
    }

我必须使用变量$ qtdade_cupom,$ cod_filial进行大量验证,例如检查有效数字。

我在哪里做数学?

我在模型中创建一个方法,如

public function checkDigits()

OR

我创建了一个行为来执行此操作?

OR

其他解决方案??

2 个答案:

答案 0 :(得分:1)

答案很简单:取决于您的需求。

如果这个数学被多个模型使用(不仅仅是特定于此模型),请使用行为。

如果仅由此特定模型使用,请将其作为模型方法保留在其中。

如果数学涉及很多其他工具和类,最好将这个数学提取到/ Lib中一个可测试良好的库中。

但正如我所说,取决于它究竟需要和用于什么。

答案 1 :(得分:1)

CakePHP内置了模型验证。

您还可以定义自定义验证方法。

更多信息: http://book.cakephp.org/2.0/en/models/data-validation.html#custom-validation-rules

希望这有帮助。