首页 > 编程语言 >php:对象运行时新增成员变量

php:对象运行时新增成员变量

时间:2023-11-30 16:23:37浏览次数:48  
标签:__ obj 变量 成员 echo return php data name

PHP: 重载 - Manual

使用框架: ci。。。

参考官网信息

参考官网示例代码即可

 1 <?php
 2 class PropertyTest {
 3      /**  被重载的数据保存在此  */
 4     private $data = array();
 5 
 6  
 7      /**  重载不能被用在已经定义的属性  */
 8     public $declared = 1;
 9 
10      /**  只有从类外部访问这个属性时,重载才会发生 */
11     private $hidden = 2;
12 
13     public function __set($name, $value) 
14     {
15         echo "Setting '$name' to '$value'\n";
16         $this->data[$name] = $value;
17     }
18 
19     public function __get($name) 
20     {
21         echo "Getting '$name'\n";
22         if (array_key_exists($name, $this->data)) {
23             return $this->data[$name];
24         }
25 
26         $trace = debug_backtrace();
27         trigger_error(
28             'Undefined property via __get(): ' . $name .
29             ' in ' . $trace[0]['file'] .
30             ' on line ' . $trace[0]['line'],
31             E_USER_NOTICE);
32         return null;
33     }
34 
35     public function __isset($name) 
36     {
37         echo "Is '$name' set?\n";
38         return isset($this->data[$name]);
39     }
40 
41     public function __unset($name) 
42     {
43         echo "Unsetting '$name'\n";
44         unset($this->data[$name]);
45     }
46 
47     /**  非魔术方法  */
48     public function getHidden() 
49     {
50         return $this->hidden;
51     }
52 }
53 
54 
55 echo "<pre>\n";
56 
57 $obj = new PropertyTest;
58 
59 $obj->a = 1;
60 echo $obj->a . "\n\n";
61 
62 var_dump(isset($obj->a));
63 unset($obj->a);
64 var_dump(isset($obj->a));
65 echo "\n";
66 
67 echo $obj->declared . "\n\n";
68 
69 echo "Let's experiment with the private property named 'hidden':\n";
70 echo "Privates are visible inside the class, so __get() not used...\n";
71 echo $obj->getHidden() . "\n";
72 echo "Privates not visible outside of class, so __get() is used...\n";
73 echo $obj->hidden . "\n";
74 ?>

 

标签:__,obj,变量,成员,echo,return,php,data,name
From: https://www.cnblogs.com/supermarx/p/17867649.html

相关文章

  • Jmeter接口自动化测试 —— Jmeter变量的使用
    ​在使用jmeter进行接口测试时,我们难免会遇到需要从上下文中获取测试数据的情况,这个时候就需要引入变量了。定义变量添加->配置元件->用户自定义的变量添加->配置元件->CSV数据文件设置变量的调用方式:${变量名}变量的作用范围:变量可以写入任何测试组件的任何字段中(除了T......
  • 夜莺项目发布 v6.4.0 版本,新增全局宏变量功能
    大家好,夜莺项目发布v6.4.0版本,新增全局宏变量功能,本文为大家简要介绍一下相关更新内容。全局宏变量功能像SMTP的配置中密码类型的信息,之前都是以明文的方式在页面展示,夜莺支持全局宏变量之后,可以在变量管理配置一个smtp_password的密码类型的变量,在SMTP配置页面,密码的......
  • basis of PHP DBMA about mysql
    php连接数据库header("Content-type:text/html;charset=utf8");$servername="localhost";$username="root";$password="root";$dbTable="dvwa";$conn=mysqli_connect($servername,$username,$password,$......
  • static变量注入
    对静态static变量注入值方式@Value("${videoPath}")privateStringpath;@Value("${videoPath}")privatestaticStringpath2;privatestaticStringpath3;@Value("${videoPath}")publicvoidsetPath3(Stringpath3......
  • linux查看全局变量
    linux查看全局变量 在Linux环境中,您可以使用printenv或者echo$VAR_NAME命令来查看全局变量。以下是一些示例:使用printenv命令:bashprintenv 这会显示所有的环境变量,包括全局变量。使用echo$VAR_NAME命令:例如,如果您想查看PATH变量的值,可以执行:bashe......
  • PHP学习路线图(一)(天工AI生成)
    学习HTML、CSS和JavaScript的方法HTML学习从基础开始,学习HTML的结构和语义,了解如何定义网页内容。可以通过阅读教程和实例来加深理解。实践是关键,尝试编写简单的HTML代码,创建基本的网页结构,并逐步添加更复杂的元素和属性。CSS学习在掌握HTML的基础上,学习CSS来设计网页的样式和布局......
  • c++跨文件修改成员变量
    如果在一个文件中有一个成员变量,需要在另外一个文件中修改这个成员变量。把这个成员变量加一个static变成静态成员变量即可。如下所示:在A.cpp中有student类classstudent{public:student();public://声明静态成员函数staticintgetTotal();staticfloat......
  • 【转载】VS Code 进行 PHP 单元测试
    参考https://www.bilibili.com/video/BV1da4y1x7ZDhttps://learnku.com/articles/22072(非常详细)https://juejin.cn/post/6844903541136424967https://docs.phpunit.de(官方文档)注意PHPUnitTestExplorer可能会抽风导致没有测试按钮之类的情况,抽风的时候也可以使用......
  • XCTF-easyphp
    这也是一道经典的的弱类型题目,访问分析代码<?phphighlight_file(__FILE__);$key1=0;$key2=0;$a=$_GET['a'];$b=$_GET['b'];if(isset($a)&&intval($a)>6000000&&strlen($a)<=3){if(isset($b)&&'8b184......
  • js 拼接字符串带变量(js方法参数单双引号拼接的问题记录)
    小结:外面单引号,里面双引号,然后方法参数给转义的单引号即可(看下面的onClick事件即可)//刷新二级信号表格(增删改操作后)functionreloadSignal(subId){//清空$("#msgAll"+subId).empty();//js手工添加表格varhtmlStart='<spanstyle="position:......