本文目录一览:
- 1、php中怎么类外访问私有方法?
- 2、php怎么访问对象中的private
- 3、PHP的类的private变量调用问题?
- 4、PHP如何修改和获取private变量的值
- 5、PHP报错:: Cannot access protected property
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怎么访问对象中的private
私有属性方法在对象外不能访问,在对象内可以访问,那么你可以写一个共有public的方法,在方法里对对象里的私有属性方法采取调用就可以了。所谓私有就是避免对象外的乱改,加个方法起限制
PHP的类的private变量调用问题?
因为__get(); __set() 方法在类的内部,类的内部是可以调用类的私有属性的变量
PHP如何修改和获取private变量的值
//__get()方法用来获取私有属性
private function __get($property_name)
{
if(isset($this-$property_name))
{
return($this-$property_name);
}else
{
return(NULL);
}
}
//__set()方法用来设置私有属性
private function __set($property_name, $value)
{
$this-$property_name = $value;
}
有了这2个方法以后,就可以直接执行:
echo $instance-$property
或 $instance-$property = “a”;
来获取和修改private变量的值了,如果没有手动添加__get();和__set();方法则会报错,
因为我们要访问的是私有变量。
希望可以采纳,谢谢。
PHP报错:: Cannot access protected property
声明为protected、private的变量,只能在类的内部实现中使用。而类的实例(对象)无法直接访问这些变量,会产生致命错误。你没有正确理解这个概念。
私有变量的访问参见下例:
?php
class Cls {
private $_foo = null;
public function setFoo($value) {
$this-_foo = $value;
}
}
望采纳,谢谢支持!