0

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

例子:

Class myComponent extends Component{

 public function doSomething(){

  doThis();

  $b = $a + 2;

  return $b;

 }

 function doThis(){

  $a = 0;

 }

}
4

2 回答 2

4

您在这里混淆了几件事。

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

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

    public function doSomething() {
        $a = $this->doThis();
        ...
    }
    
    protected function doThis() {
        return 0;
    }
    
于 2012-09-11T10:19:57.980 回答
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;
    }

}

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

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

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

于 2012-09-11T10:18:49.327 回答