2013-09-29 66 views
0

我在學習並試圖理解與oop有關的事情,所以我的問題聽起來可能很愚蠢。php OOP直接訪問對象

我希望能夠得到一個對象直接是這樣的:

$some_urls = new some_urls; 
print_r($some_urls->url()->illegal); 

我必須每個array()裏面的功能之前添加(object)或者是有一個更有效的方法?謝謝並抱歉,如果它是重複的問題,我看這很長一段時間。

class some_urls 
{ 
    public function url() 
    { 
     return (object)array(

      'illegal' => (object)array(
       'a_path', 
       'another_path' 
      ), 

      'legal' => (object)array(
       'a_path', 
       'another_path' 
      ) 
     ); 
    } 
} 

編輯: 我想我發現基於一些想法,通過這裏的傢伙一個更好的選擇。 你認爲這樣比較好?

$some_urls = new some_urls; 
print_r($some_urls->get_url('illegal')); 


class some_urls 
{ 
public function get_url($data) 
{ 
    $url = $this->url(); 
    return $url[$data]; 
} 


    protected function url() 
    { 
     return array(

      'illegal' => array(
       'a_path', 
       'another_path' 
      ), 

      'legal' => array(
       'a_path', 
       'another_path' 
      ) 
     ); 
    } 
} 
+0

使用任何類變量或數組,更容易 –

+0

'$ some_urls-> url()['illegal']'應該在最近的PHP版本中工作。 – ComFreek

+0

在版本5.3.10-1ubuntu3.8它沒有:( – durduvakis

回答

0

你可以利用的stdClass的

$object1 = new stdClass(); 
$object1->a_path = 'hello'; 
0

你有很多選擇。

選項1.創建一個標準類,然後根據需要

$obj = new stdclass(); 
$obj->illegal=new stdclass(); 

選項2以與陣列剛工作添加屬性。

選項3.遍歷數組並創建一個對象。

foreach($url as $key=>$value){//Build your object} 

選項4.使用json_decode

$object = json_decode(json_encode($array), FALSE); 

選項5.添加屬性類。

public variable illegal