我正在玩一些PHP,我发现自己想知道什么。
<?php
class license
{
public $v=array('product'=>"babab");
function blah($b)
{
if (//code)
{
//code
}
}
有没有办法在类的另一个实例中更改数组的值?
例如......
$c = new license;
//change $v values??
$c->blah('woof.php');
如何更改$ v数组中的product值?
我希望我很清楚。
答案 0 :(得分:3)
由于您将其声明为公共,因此任何人都可以向其写入具有该类实例的内容。
$c->v = array('key', 'value');
您可以将其更改为您想要的任何数据类型。
$c->v = new MyObject();
$c->v = NULL;
$c->v = FALSE;
$c->v = 1;
但是,如果您说要创建其他许可证对象并且能够更改属性的值,则无法使用现有体系结构。单例设计模式解决了这个问题。
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
答案 1 :(得分:3)
您可以按类对象更改公共类属性:
class license
{
public $v=array('product'=>"babab");
function blah($b)
{
if (1)
{
echo "";
}
}
}
$c = new license;
$c->v['product'] = "new values";
echo $c->v['product'];