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;
    }

}

クラスプロパティは、関数を介して情報を更新するための優れた方法です。クラス全体がどこからでもアクセスできます。ifを介して宣言した場合public、次のようにインスタンスを介してクラスの外部で直接使用できます。

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

privateまたは、関数内でオブジェクト自体には表示されているが、外界には表示されていないプロパティを使用することもできます(まあ、とにかくアクセスできません)。

于 2012-09-11T10:18:49.327 に答える