如果未在类对象中声明,如何在每次初始化变量之前执行某些操作

问题描述 投票:0回答:1

我试图了解每次 PHP 变量如何执行某些操作,即使未声明它也是在类中初始化的。

因此,在阅读了 stackoverflow 上的一些内容后,我偶然发现了神奇方法

__set()
,但只有当变量具有私有可见性或不存在的属性时(因此在发生错误的情况下)才会调用它。

您可以使用类似的东西在变量初始化之前执行某些操作。

我说的是当你做这样的事情时:

class obj {
   //here needed something
}
$obj = new obj();
$obj->newvar = 'varvalue';

无论如何我都需要它。

我也需要它,因为然后我需要检查变量是否在对象中声明为公共(声明中不存在),因此可以仅从对象外部初始化声明的变量。如果您也知道第二部分,您也可以为此提供解决方案。

php object variables class-visibility
1个回答
0
投票

您可以创建一个空数组并使用 set 和 get 方法将新的变量数据传递到其中

<?php

class obj {
   private $data = [];

   public function __set($name, $value) {
      $this->data[$name] = $value;
  }

  public function __get($name) {
   return $this->data[$name] ?? null;
}

}
$obj = new obj();
$obj->newvar = 'varvalue';
© www.soinside.com 2019 - 2024. All rights reserved.