这些强调的PHP功能是否曾被称为?

时间:2011-09-08 15:27:16

标签: php cakephp naming-conventions

继承了一个旧的CakePHP网站,我试图找出一些函数的功能。我有几个函数与另一个函数具有相同的名称,但首先使用下划线,例如save()_save()。但是,函数_save()永远不会在任何上下文中调用,但save()是。

我读过this question,看起来它来自一个旧的最差练习练习,但这并没有真正解释为什么它在我的代码中;您还需要将function _save()称为_save()吗?如果没有拨打_save(),是否可以安全删除?

我希望它消失,即使save()函数不应该存在,重写完美的框架功能。它看起来像是同一个函数的旧版本,但没有注释,我不知道是否有一些奇怪的上下文,其中php / Cake将回退到强调的函数名。

这是好奇的代码。仔细观察后,看起来强调的功能是由于某种原因留下的功能的旧版本。至少有一个是被调用的“私有”方法(来自同名的公共函数,减去下划线......):

    function __save() {
    $user = $this->redirectWithoutPermission('product.manage','/',true);

    if ($this->data) {
        $this->Prod->data = $this->data;
        $saved_okay = false;
        if ($this->Prod->validates()) {
            if ($this->Prod->save()) $saved_okay = true;
        }
        if ($saved_okay) {
            $product_id = ($this->data['Prod']['id']) ? $this->data['Prod']['id'] : $this->Prod->getLastInsertId();
            if ($this->data['Plant']['id']) {
                $this->data['Prod']['id'] = $product_id;
                $this->Prod->data = $this->data;
                $this->Prod->save_plants();
                $this->redirect('/plant/products/'.$this->data['Plant']['id']);
            } else {
                $this->redirect('/product/view/'.$product_id);
            }
            die();
        } else {
            die('did not save properly');
        }
    } else {
        die('whoops');
    }
}


function save() {
    $user = $this->redirectWithoutPermission('product.manage','/products',true);

    if ($this->data) {
        $this->Prod->data = $this->data;
        if ($this->Prod->validates()) {
            $this->Prod->save();

            $gotoURL = isset($this->data['Navigation']['goto'])?$this->data['Navigation']['goto']:'/';
            $gotoURL = str_replace('%%Prod.id%%', $this->data['Prod']['id'], $gotoURL);

            if (isset($this->data['Navigation']['flash'])) {
                $this->Session->setFlash($this->data['Navigation']['flash']);
            }
            if (isset($this->params['url']['ext']) && $this->params['url']['ext']=='ajax') {
                $value = array(
                    'success'=>true
                    ,'redirect'=>$gotoURL
                );
                print $this->Json->encode($value);
            } else {
                $this->redirect($gotoURL);
            }
        } else {
            $value = array(
                'success'=>false
                ,'message'=>"You have invalid fields."
                ,'reason'=>'invalid_fields'
                ,'fields'=>array(
                    'Prod'=>$this->Prod->invalidFields()
                )
            );
            print $this->Json->encode($value);
        }
    } else {
        $this->redirect('/products');
    }
    die();
}

1 个答案:

答案 0 :(得分:1)

我曾希望了解一些惯例是否适用于这种情况,但是从测试中我发现函数是而不是,这实际上是我问的问题的答案。