×

php私有变量怎么访问权限

php私有变量怎么访问权限(php文件访问权限)

admin admin 发表于2023-03-23 15:54:10 浏览71 评论0

抢沙发发表评论

本文目录一览:

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;

    }

}

望采纳,谢谢支持!