Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp最佳实践_Php_Cakephp_Cakephp 2.0_Cakephp Model - Fatal编程技术网

Cakephp最佳实践

Cakephp最佳实践,php,cakephp,cakephp-2.0,cakephp-model,Php,Cakephp,Cakephp 2.0,Cakephp Model,我有一个关于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');

我有一个关于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_进行大量验证,比如检查有效数字

我在哪里做数学

我在模型内部创建了一个方法,如

public function checkDigits()

我创造了这样的行为


其他解决方案???

答案很简单:取决于你需要什么

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

如果它仅用于此特定模型,请将其作为模型方法保存在内部

如果数学涉及许多其他工具和类,那么最好将此数学提取到/lib中一个可测试的lib中


但正如我所说的,这取决于它的确切需求和用途。

CakePHP内置了模型验证

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

更多信息:


希望这有帮助。

不要使用
$this->name
,它是
$this->alias
。是的,你明白我的意思。非常感谢。如果我有我的代码,许多计算将与许多行使代码肮脏。这是我的问题,谢谢。我知道蛋糕的定制验证。在我的情况下,它不应该被占用,因为我必须检查一个数字验证并生成另一个数字并将其保存在其他表中。您可以通过自定义验证来实现这一点。