0

我试图在一个名为 inside() 的函数中使用我的类我有类似的东西:

class MyClass{
  public function test(){ echo "test ok"; }
}    

$mc = new MyClass();

function inside(){
  global $mc;
  $mc->test();
}

但这不起作用:(我得到:

致命错误:在...中的非对象上调用成员函数 test()

一种解决方案是将类 $mc 作为参数传递给函数 inside() 但我想要别的东西:/

任何想法 ?

伙计们

4

3 回答 3

1

由于inside函数依赖于MyClass类,它应该作为依赖注入传入。

$mc = new MyClass;

function inside(MyClass $mc){
  $mc->test();
}

看起来您需要复习一下 (Gang of Fours) 注入设计模式,http ://martinfowler.com/articles/injection.html

于 2013-11-10T19:33:31.487 回答
0

如果您只想访问驻留在类中的函数,则可以将其定义为静态

class MyClass {
  static function test() {
        echo "test ok";
    }
}

然后你不必使用全局:

function inside() {
    MyClass::test();
}
于 2013-11-10T19:40:20.537 回答
0

您需要将 test 定义为public function test(){....

于 2013-11-10T19:28:58.400 回答