很多站长朋友们都不太清楚php调用私有属性,今天小编就来给大家整理php调用私有属性,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php中怎么类外访问私有方法? 2、 php如何通过子类继承父类共有方法访问父类私有属性 3、 PHP中,为什么子类可以访问父类的私有属性,而且可以直接调用 4、 php子类可以继承和访问父类的私有属性和方法吗 php中怎么类外访问私有方法?你问的是私有方法还是私有属性?
你说的__get __set 是访问和设置属性用的。
__call才是访问方法用的。
但这两种都需要修改原始类,既然有这个权限了,那私有方法有什么必要定义呢?
另外一种获取私有属性或调用私有方法的思路是通过反射:
//MyClass这个类中包含了一个名为myFun的私有方法
class MyClass {
private $tmp = 'hello';
private function myFun()
{
echo $this->tmp . ' ' . 'world!';
}
}
//通过类名MyClass进行反射
$ref_class = new ReflectionClass('MyClass');
//通过反射类进行实例化
$instance = $ref_class->newInstance();
//通过方法名myFun获取指定方法
$method = $ref_class->getMethod('myFun');
//设置可访问性
$method->setAccessible(true);
//执行方法
$method->invoke($instance);
//获取属性
$property = $ref_class->getProperty('tmp');
//打印属性
var_dump($property);
不知道你提这个单纯是个问题,还是有别的需求,可以多看看php手册学习一下。
php 访问控制
php 反射
php如何通过子类继承父类共有方法访问父类私有属性在父类中加个public方法,
如private
$aaa
=
'test';
public
function
getAAA(){
return
$this->aaa;
}
在子类中调用parent::getAAA();就可以获得父类私有属性
当然如果你想获取多个,可以改成动态变量名,
getAAA($v){
return
$this->{$v};
}
PHP中,为什么子类可以访问父类的私有属性,而且可以直接调用你写的不对哦。
按你写的,
name
是子类是属性,而不是父类的。
这样:
<?php
class
Person
{
private
$name="zhangsan";
}
class
Man
extends
Person
{
}
$m
=
new
Man();
//$m->name="zhangsan";
echo
$m->name;
?>
php子类可以继承和访问父类的私有属性和方法吗你这样理解也可以,当父类有私有的方法和属性,子类是继承不到的,所以子类不能访问父类的私有方法和属性。java
特性,private:类中只要限定为private的成员,只能被这个类本身访问
关于php调用私有属性的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php调用私有属性 php私有方法的详细内容...