不能让我的头在这个,有没有什么办法来检查一个方法是否被内部调用?通过这个我的意思是回溯来检查它是否被$ this调用,而不是指向实例的指针。有点像私人功能的概念,但只有功能是公共的?PHP,区分内部和外部类的方法调用
<?php
class Foo {
public function check() {
/*
if invoked by $this (internally)
return true
else
return false
*/
}
public function callCheck() {
/* returns true because its called by $this */
return $this->check();
}
}
$bar = new Foo;
// this should return false because we are calling it from an instance
$bar->check();
// where as this will return true
$bar->callCheck();
?>
也许这是可以撤消的,但我真的需要它在我的大学项目?任何人都会遇到一个解决方案,或知道如何识别解决方案。
谢谢。
看起来像你应该更换你的接口。函数不应该根据*如何调用而作出不同的反应。如果您正在寻找'public' /'private'行为,为什么不使用它? – deceze 2011-03-25 03:42:42
你为什么想知道其中的差异?您似乎可能会尝试用错误的解决方案来解决问题。 – Jonah 2011-03-25 03:43:18
@deceze @Jonah我试图将对象合并在一起,但保持分开。所以我可以通过编程扩展对象,而不是在界面中定义它。所以如果一个对象有一个受保护的函数,那么合并它的对象可以调用受保护的函数,但显然受保护意味着你可以从一个实例调用它。你懂我的意思吗??? – 2011-03-25 04:10:01