什么是PHP中的stdClass?

请定义stdClass是什么。


stdClass是PHP的通用空类,有点像Java中的Object或Python中的object编辑:但实际上并未用作通用基类;感谢@Ciaran指出了这一点)。

这对匿名对象,动态属性等非常有用。

考虑StdClass的简单方法是作为关联数组的替代方法。 看下面的这个例子显示了json_decode()如何获得一个StdClass实例或一个关联数组。 在这个例子中也没有显示, SoapClient::__soapCall返回一个StdClass实例。

<?php
//Example with StdClass
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);
echo $stdInstance->foo . PHP_EOL; //"bar"
echo $stdInstance->number . PHP_EOL; //42
//Example with associative array
$array = json_decode($json, true);
echo $array['foo'] . PHP_EOL; //"bar"
echo $array['number'] . PHP_EOL; //42

有关更多示例,请参阅PHP和StdClass中的动态属性。


stdClass只是将其他类型转换为对象时使用的通用'空'类。 尽管其他两个答案说, stdClass 不是 PHP中对象的基类。 这可以很容易地证明:

class Foo{}
$foo = new Foo();
echo ($foo instanceof stdClass)?'Y':'N';
// outputs 'N'

我不相信PHP中有一个基础对象的概念


stdClass是另一个很棒的PHP功能。 您可以创建一个匿名PHP类。 让我们来看一个例子。

$page=new stdClass();
$page->name='Home';
$page->status=1;

现在认为你有另一个类,它将使用一个页面对象进行初始化并基于它执行。

<?php
class PageShow {

    public $currentpage;

    public function __construct($pageobj)
    {
        $this->currentpage = $pageobj;
    }

    public function show()
    {
        echo $this->currentpage->name;
        $state = ($this->currentpage->status == 1) ? 'Active' : 'Inactive';
        echo 'This is ' . $state . ' page';
    }
}

现在你必须用页面对象创建一个新的PageShow对象。

在这里,您无需为此编写新的类模板,只需使用stdClass即时创建类即可。

    $pageview=new PageShow($page);
    $pageview->show();
链接地址: http://www.djcxy.com/p/9841.html

上一篇: What is stdClass in PHP?

下一篇: What are the differences in die() and exit() in PHP?