2014-02-10 57 views
0

當我嘗試從我轉換爲JSON的數組中獲取值時,我得到了「嘗試獲取非對象的屬性」。PHP數組轉換爲JSON:試圖獲取非對象錯誤的屬性

片段的Utils.php

class Utils { 

    public $config; 

    public function __construct($config) { 
     $this->config = json_decode(json_encode($config)); 
    } 

片段的System.php

require_once("Utils.php"); 
class System extends Utils { 
// a bunch of functions 
public function bind($port) { 
// stuff 
$this->writeOutput("Host: {$this->config->MySQL->Host}"); 

片段的Game.php

require_once("Config.php"); 
$utils = new Utils($config); 

config.php文件是什麼,有點像:

$config = array(

"array" => array(
    "Key" => "Value", 
    "Key2" => "Value" 
), 

"anotherarray" => array(
    "AnotherKey" => "AnotherValue", 
    "ItsAnArray" => array("key" => "value"), 
), 

); 

這就是說錯誤是每次使用System.php中的$ this-> config。我究竟做錯了什麼?

+1

爲什麼你編碼/陣列中的解碼爲JSON同一條線? – enapupe

+0

這是我以前的帖子上的答案:http://stackoverflow.com/questions/21684375/convert-a-multidimensional-array-to-an-xml-object-in-php – James

+0

這是一些去馬編程,呵呵?請用線條發佈完整的錯誤細節。 – enapupe

回答

0

您可以通過使用

public function __construct($config) { 
    $this->config = (object) $config; 
} 

$配置參數轉換的構造函數,但,請記住:數組轉換成一個對象不是遞歸。所以,你必須使用這種訪​​問屬性:

$util = new Util($config); 

print_r($util->config->array['key']); 

正如同樣的錯誤問題依然,請嘗試使用此:

require_once("Utils.php"); 
class System extends Utils { 

    public function __construct($config){ 
     parent::__construct($config); 
    } 

    // a bunch of functions 
    public function bind($port) { 
     // stuff 
     $this->writeOutput("Host: {$this->config->MySQL->Host}"); 
    } 
} 

$v = new System($array); 
+0

它仍然說「嘗試獲取非對象的屬性」。 – James

相關問題