说我有:
文件BaseFoo.php:
require('MyClass1.php')
class BaseFoo(){
function check(){
//do somme stuff
}
function f1($o){
$c = new MyClass1();
return $c->f1($o);
}
}
文件MyClass1.php:
MyClass1(){
function f1(){
???->check() // how to call check() (in initiator BaseFoo class) ?
// do other stuff
}
}
现在问题是:在MyClass1中,函数f1,我想调用启动器类中的check()函数。
感谢您的帮助!
答案 0 :(得分:0)
如果你谷歌它,你会找到你的答案,但Check this page
所以你可以使用类似的东西:
class BaseFoo(){
public static function check(){
//do somme stuff
}
function f1($o){
$c = new MyClass1();
return $c->f1($o);
}
}
class MyClass1(){
function f1(){
BaseFoo::check() // call static function check from BaseFoo
// do other stuff
}
}
答案 1 :(得分:0)
您可以进行“static
”功能检查,以便拨打BaseFoo::check()
答案 2 :(得分:0)
因为BaseFoo
没有扩展MyClass1
,所以它不被称为基类。这意味着您确实无法使用parent
。 您需要有一个可以调用该方法的对象。
根据您的需要,您可能需要在BaseFoo
(本地或作为成员)中创建类MyClass1
的对象(或传递一个),或者您可以使BaseFoo::check()
静态:< / p>
class BaseFoo(){
static function check(){
// Note: you can only access static members here
// Calling non-static methods statically generates an E_STRICT level warning.
}
function f1($o){
$c = new MyClass1();
return $c->f1($o);
}
}
但是,最有可能的是,这不是你真正想做的事情。你应该问一个问题“谁拥有什么?”。在这里,BaseFoo
拥有MyClass1
对象。所以你可能想要这个:
class BaseFoo(){
function check(){
//do somme stuff
}
function f1($o){
$c = new MyClass1();
check();
return $c->f1($o);
}
}
和
MyClass1(){
function f1(){
// Don't check here, the creator should check
// do other stuff
}
}
您可能需要在MyClass1
和BaseFoo
中检查不同的内容,并且您将有2个单独的check
方法。