stdClass
只是在将其他类型转换为对象时使用的通用 “空” 类。尽管其他两个答案都说, stdClass
不是 PHP 中对象的基类。这可以很容易地证明:
class Foo{}
$foo = new Foo();
echo ($foo instanceof stdClass)?'Y':'N';
// outputs 'N'
我不相信 PHP 中存在基础对象的概念
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 是另一个很棒的 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';
}
}
现在,您必须使用 Page Object 创建一个新的 PageShow 对象。
这里不需要为此编写新的类模板,您只需使用 stdClass 即可创建一个类。
$pageview=new PageShow($page);
$pageview->show();