Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-更改类的另一个实例中的值数组_Php_Arrays - Fatal编程技术网

php-更改类的另一个实例中的值数组

php-更改类的另一个实例中的值数组,php,arrays,Php,Arrays,我正在玩一些php,我发现自己在想一些事情 <?php class license { public $v=array('product'=>"babab"); function blah($b) { if (//code) { //code } } 如何更改$v数组中产品的值 我希望我说得很清楚。既然您将它声明为public,任何人都可以向它写入该类的实例 $c-&

我正在玩一些php,我发现自己在想一些事情

    <?php

class license
{

    public $v=array('product'=>"babab");
    function blah($b)
    {
        if (//code)
        {
            //code
        }
    }
如何更改$v数组中产品的值


我希望我说得很清楚。

既然您将它声明为public,任何人都可以向它写入该类的实例

$c->v = array('key', 'value');
您可以将其更改为所需的任何数据类型

$c->v = new MyObject();
$c->v = NULL;
$c->v = FALSE;
$c->v = 1;
但是,如果您说您希望创建一个额外的许可证对象并能够更改属性的值,那么您将无法使用现有的体系结构。singleton设计模式解决了这个问题

class License {
  private static $instance;
  private $v;
  private function __construct() {}
  private function __clone() {}

  public static function getInstance() {
    if(!isset(self::$instance)) {
      self::$instance = new static();
    }
    return self::$instance;
  }
  public function setV($data) {
    $this->v = $data;
  }
  public function getV() {
    return $this->v;
  }
}

$license = License::getInstance();
$license->setV(array("key" => "value"));
var_dump($license->getV());

$license2 = License::getInstance();
var_dump($license == $license2);
// true

由于您将其声明为public,因此任何人都可以向其写入该类的实例

$c->v = array('key', 'value');
您可以将其更改为所需的任何数据类型

$c->v = new MyObject();
$c->v = NULL;
$c->v = FALSE;
$c->v = 1;
但是,如果您说您希望创建一个额外的许可证对象并能够更改属性的值,那么您将无法使用现有的体系结构。singleton设计模式解决了这个问题

class License {
  private static $instance;
  private $v;
  private function __construct() {}
  private function __clone() {}

  public static function getInstance() {
    if(!isset(self::$instance)) {
      self::$instance = new static();
    }
    return self::$instance;
  }
  public function setV($data) {
    $this->v = $data;
  }
  public function getV() {
    return $this->v;
  }
}

$license = License::getInstance();
$license->setV(array("key" => "value"));
var_dump($license->getV());

$license2 = License::getInstance();
var_dump($license == $license2);
// true

可以按类对象更改公共类属性,如下所示:

现场演示:


可以按类对象更改公共类属性,如下所示:

现场演示:


它应该像
$c->$v[product]=“new key”
一样简单,就像
$c->$v[product]=“new key”
你们都给了我答案,但你们先回答了=]谢谢。你们都给了我答案,但你们先回答了=]谢谢。