我正在尝试在一个名为inside()的函数中使用我的类 我有类似的东西:
class MyClass{
public function test(){ echo "test ok"; }
}
$mc = new MyClass();
function inside(){
global $mc;
$mc->test();
}
但这不起作用:( 我明白了:
致命错误:在...中的非对象上调用成员函数test()
一种解决方案是将类$ mc作为参数传递给()里面的函数但是我想要其他东西:/
有什么想法吗?
Ty人
答案 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();
}