在函数内部使用类

时间:2013-11-10 19:26:23

标签: php

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

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

$mc = new MyClass();

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

但这不起作用:( 我明白了:

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

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

有什么想法吗?

Ty人

3 个答案:

答案 0 :(得分:1)

由于inside函数取决于MyClass类,因此应该作为依赖注入传递。

$mc = new MyClass;

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

看起来你需要重新审视(Gang of Fours)注射设计模式,http://martinfowler.com/articles/injection.html

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

然后你不必使用全局:

function inside() {
    MyClass::test();
}