【问题标题】:Using a class that has params inside another class (PHP)使用在另一个类中具有参数的类(PHP)
【发布时间】:2013-02-09 14:39:50
【问题描述】:

我正在尝试访问在另一个类中公开的函数的结果,但我不完全确定如何执行此操作。我试图访问的类需要参数,所以 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?

【问题讨论】:

    标签: php class


    【解决方案1】:

    怎么样

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

    或者你需要一行的东西?

    【讨论】:

      【解决方案2】:

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

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

      或者...

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

      【讨论】:

        【解决方案3】:

        您必须将 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();
        

        这是你想要的吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-12
          • 2021-05-21
          • 2010-12-23
          • 1970-01-01
          • 1970-01-01
          • 2018-01-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多