0

我正在学习并试图理解有关 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'
            )
        );
    }
}

编辑:我想我根据这里的一些想法找到了一个更好的选择。你认为这更好吗?

$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'
            )
        );
    }
}
4

2 回答 2

0

您可以使用 stdClass

$object1 = new stdClass();
$object1->a_path = 'hello';
于 2013-09-29T18:37:01.853 回答
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
于 2013-09-29T18:38:38.953 回答