2014-07-19 38 views
0

有没有办法构建一个PHP应用程序类,使公用函数只能访问同一名称空间中的其他类?防止PHP公共函数在名称空间外引用?

+1

没有,是不是很遗憾。可能有解决方法,但并非固有,不,不存在 – Ohgodwhy

+1

这是可能的唯一方法是通过检查[backtrace](http://php.net/manual/en/function.debug- backtrace.php),但这真的很可怕。 – PeeHaa

+0

为什么不使用'protected'函数并将名称空间中的类相互扩展? –

回答

0

是的,你可以通过反射来做到这一点,假设命名空间中的所有这些类扩展了定义这个原理的基本抽象类。

http://php.net/manual/en/reflectionclass.getnamespacename.php

例子:http://codepad.viper-7.com/GcGscR

+1

这是如何防止其他代码(来自命名空间之外)访问公共方法? – PeeHaa

+0

请参阅此示例:http://codepad.viper-7.com/GcGscR - 请注意,我使用的函数数组解引用仅在PHP 5.4或更高版本中可用。 – Syx

+0

你并不需要为此使用反射。实际的魔法在于调试跟踪的检查。 – PeeHaa

相关问题