myclass.php
class myclass {
private $name;
public function showData(){
include_once "extension.php";
otherFunction($this);
}
private function display(){
echo "hello world!";
}
}
extension.php
function otherFunction($obj){
if(isset($obj){
$obj->display();
}
}
好的,所以这就是问题,对于你们中的一些人来说,显而易见我从一个包含文件调用私有方法,这显然会引发错误。我的问题是:
1。有没有一种包含文件的方式 可以使用外部函数来调用 私人方法?
2。我怎么能使用包含的文件 访问私有方法并通过执行 所以将我的功能扩展到另一个 文件没有我的类文件所以 臃肿了许多功能?
第3。这甚至可能吗?
由于
答案 0 :(得分:2)
如果你正在使用PHP 5.3,那么这是可能的。
它被称为反射。根据您的需求,您需要ReflectionMethod
http://us3.php.net/manual/en/class.reflectionmethod.php
这是一个例子
<?php
// example.php
include 'myclass.php';
$MyClass = new MyClass();
// throws SPL exception if display doesn't exist
$display = new ReflectionMethod($MyClass, 'display');
// lets us invoke private and protected methods
$display->setAccesible(true);
// calls the method
$display->invoke();
}
显然,您需要将其包装在try / catch块中以确保处理异常。