请定义什么是stdClass。


当前回答

同样的,

$myNewObj->setNewVar = 'newVal'; 

生成一个stdClass对象-自动强制转换

我今天把这个单词拼错了:

$GLOBASLS['myObj']->myPropertyObj->myProperty = 'myVal';

太酷了!

其他回答

Stdclass是一种当某些数据必须放在类中时PHP避免停止解释脚本的方法,但是 不幸的是,这个类没有定义

例子:

 return $statement->fetchAll(PDO::FETCH_CLASS  , 'Tasks');

在这里,数据将放在预定义的“任务”中。但是,如果我们这样做代码:

 return $statement->fetchAll(PDO::FETCH_CLASS );

然后PHP将结果放在stdclass中。

简单的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';
    }
}

现在您必须使用Page object创建一个新的PageShow对象。

这里不需要写一个新的类模板,你可以简单地使用stdClass创建一个动态的类。

    $pageview=new PageShow($page);
    $pageview->show();

stdClass不是匿名类或匿名对象

这里的答案包括stdClass是匿名类甚至匿名对象的表达式。这不是真的。

stdClass只是一个常规的预定义类。你可以使用instanceof操作符或函数get_class来检查。这里没什么特别的。PHP在将其他值强制转换为对象时使用这个类。

在程序员使用stdClass的许多情况下,数组是更好的选择,因为它有有用的函数,而且这个用例表示的是数据结构,而不是真正的对象。

你也可以使用object将数组强制转换为你选择的对象:

Class Example
{
   public $name;
   public $age;
}

现在要创建一个Example类型的对象并初始化它,你可以做以下任何一件事:

$example = new Example();
$example->name = "some name";
$example->age = 22;

OR

$example = new Example();
$example = (object) ['name' => "some name", 'age' => 22];

第二种方法主要用于初始化具有许多属性的对象。

同样值得注意的是,还可以使用json_decode()创建stdClass对象。