2013-09-29 2 views
0

Я учусь и пытаюсь понять вещи, касающиеся oop, поэтому мой вопрос может звучать очень глупо.php OOP доступ к объектам напрямую

Я хочу, чтобы иметь возможность добраться до объекта непосредственно, как это:

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

Должен ли я добавить (object) перед каждым array() внутри функции или есть более эффективный способ? Спасибо и извините, если повторный вопрос, я долго об этом заглядываю.

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

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

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

EDIT: Я думаю, что я нашел лучшую альтернативу на основе некоторых идей, ребята здесь. Вы думаете, что это лучше?

$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() [ 'незаконно'] 'должны работать в последних версиях 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 
Смежные вопросы