2014-01-18 58 views
1

我正在玩一些PHP,我發現自己想知道什麼。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陣列中存在的價值?

我希望我很清楚。

+0

它應該就這麼簡單'$ C - > $ V [產品] =」新密鑰「' – dreamweiver

回答

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 
+0

你們都給了我答案,但你先回答=]謝謝。 – user3196332

3

您可以通過類對象喜歡這種改變公共類屬性:

現場演示:https://eval.in/91444

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']; 
相關問題