CakePHP2.0如何在组件中使用函数?

时间:2012-09-11 10:14:23

标签: php oop cakephp

这可能是一个非常noob的问题,但我似乎无法在任何地方找到答案。是否可以在组件中创建自己的函数并在同一组件中调用它?

示例:

Class myComponent extends Component{

 public function doSomething(){

  doThis();

  $b = $a + 2;

  return $b;

 }

 function doThis(){

  $a = 0;

 }

}

2 个答案:

答案 0 :(得分:4)

你在这里混淆了几件事。

  1. 您通常可以毫无问题地创建 对象方法 。您必须将它们称为对象方法:

    public function doSomething() {
        $this->doThis();
        ...
    }
    
  2. 只是调用doThis()不会在调用范围内神奇地创建变量$a。该变量将在doThis内创建,并将包含在那里。这是一件好事。您必须明确return方法中的值才能使其可用:

    public function doSomething() {
        $a = $this->doThis();
        ...
    }
    
    protected function doThis() {
        return 0;
    }
    

答案 1 :(得分:0)

变量范围意味着函数完成时$a函数内的doThis会丢失,但您可以这样做:

Class myComponent extends Component
{
    public function doSomething()
    {
        $a=$this->doThis();
        $b = $a + 2;
        return $b;
    }

    function doThis()
    {
        $a = 0;
        return $a;
    }

}

我可能会使用这样的类属性:

Class myComponent extends Component
{
    public $a;
    public function doSomething()
    {
        $this->doThis();
        $b = $this_.a + 2;
        return $b;
    }

    public function doThis()
    {
        $this->a = 0;
    }

}

类属性是通过函数更新信息的好方法。它们可以在任何地方访问整个班级。如果你通过public声明它,如果可以直接通过类似的实例在类外使用:

$var=new myComponent();
// Crete a new instance of the object.
echo $var->a; // Outputs the value.

或者,您可以使用private属性,这些属性在函数中对对象本身可见,但对于外部世界是不可见的(好吧,无论如何都无法访问)。