0

別のクラス内で公開されている関数の結果にアクセスしようとしていますが、これを行う方法が完全にはわかりません。アクセスしようとしているクラスにはパラメーターが必要なため、class_name::function() メソッドが機能していません。私はまだクラスで作業するのが初めてで、それを学ぼうとしています。

クラス 1:

class foo {
  private $var1;
  function __construct($param) {
    $this->var1 = $param
  }
  public function myFunc() {
    echo $this->var1;
  }
}

クラス2

class bar {
  public function secondFunc() {
    var_dump(**RESULT FROM foo->myFunc HERE);
  }
}

これらの 2 つのクラスは、私が実際に行っていることの基本的な例ですが、これから私の質問の一般的なアイデアを得る必要があります。
正しい結果を表示するには、最初のクラスにパラメーターが渡される必要があります。そうしないと、関数は失敗します。
foo::bar() を使用してみましたが、これは最初のクラスにパラメーターを渡さないため、失敗します。
では、bar から secondFunc 内の foo から myFunc にアクセスするにはどうすればよいでしょうか?

4

3 に答える 3

1

foo のインスタンスを bar に渡す必要があります。

class Foo {

  private $var1;

  function __construct($param) {

    $this->var1 = $param
  }

  public function myFunc() {

    return $this->var1;
  }
}

class Bar {

  private $foo;

  function __construct(Foo $foo) {

    $this->foo = $foo
  }

  public function secondFunc() {

    var_dump($this->foo->myFunc());
  }
}

$bar = new Bar(new Foo('something'));
$bar->secondFunc();

それはあなたが望むものですか?

于 2013-02-24T09:23:56.437 に答える
0

どうですか

class bar {
  public function secondFunc() {
    $foo = new foo($param);
    var_dump($foo->myFunc());
  }
}

それとも、一行で何かが必要ですか?

于 2013-02-24T09:24:00.930 に答える
0

あなたの例はあまり実用的ではありませんが、基本的な考え方は次のとおりです

public function secondFunc($dependency) {
    var_dump($dependency->myFunc());
}

また...

public function secondfunc() {
    $foo = new foo();
    var_dump($foo->myFunc();
}
于 2013-02-24T09:24:36.227 に答える