使用在另一个类中有params的类(PHP)

时间:2013-02-24 09:15:13

标签: php class

我正在尝试访问另一个类中公共函数的结果,但我不完全确定如何执行此操作。我正在尝试访问的类需要参数,因此class_name :: function()方法不起作用。我还是刚开始学习课程,并试图学习它。

第一课:

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

这两个类是我实际在做的基本例子,但是从这个角度来看,你应该对我的问题有一个大概的了解。
为了显示正确的结果,第一个类需要传递给它的参数,否则函数会失败 我尝试使用foo :: bar(),但这并没有将任何参数传递给第一个类,因此它失败了。
那么,如何从bar中的secondFunc中的foo访问myFunc?

3 个答案:

答案 0 :(得分: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();

这就是你想要的吗?

答案 1 :(得分:0)

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

或者您需要一行中的某些内容吗?

答案 2 :(得分:0)

你的例子不太实用,但这是基本的想法

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

...或

public function secondfunc() {
    $foo = new foo();
    var_dump($foo->myFunc();
}