Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php OOP直接访问对象_Php_Oop - Fatal编程技术网

php OOP直接访问对象

php OOP直接访问对象,php,oop,Php,Oop,我正在学习并试图理解oop的相关内容,所以我的问题听起来可能很傻 我希望能够像这样直接到达一个对象: $some_urls = new some_urls; print_r($some_urls->url()->illegal); 我必须在函数中的每个数组()之前添加(对象),还是有更有效的方法?感谢和抱歉,如果这是重复的问题,我期待了很长时间 class some_urls { public function url() { return (obj

我正在学习并试图理解oop的相关内容,所以我的问题听起来可能很傻

我希望能够像这样直接到达一个对象:

$some_urls = new some_urls;
print_r($some_urls->url()->illegal);
我必须在函数中的每个
数组()之前添加
(对象)
,还是有更有效的方法?感谢和抱歉,如果这是重复的问题,我期待了很长时间

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

您可以使用stdClass

$object1 = new stdClass();
$object1->a_path = 'hello';
你有很多选择

备选案文1。创建一个标准类,然后根据需要添加属性

$obj = new stdclass();
$obj->illegal=new stdclass();
备选案文2。只需使用数组即可

备选案文3。迭代数组并创建一个对象

foreach($url as $key=>$value){//Build your object}
备选案文4。使用json_解码

$object = json_decode(json_encode($array), FALSE);
备选案文5。向类中添加属性

public variable illegal

无论是使用类变量还是数组,更简单的
$some_url->url()['unclail']
应该在最新的PHP版本中工作。在版本5.3.10-1ubuntu3.8中,它不支持:(PHP5.4支持数组解引用。当然,但是做我刚才展示的事情被认为是愚蠢的。当PHP5.3中可以做得更好时,它会增加另一项工作吗?