请定义什么是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对象。
推荐文章
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- 如何从关联PHP数组中获得第一项?
- PHP/MySQL插入一行然后获取id
- 我如何排序一个多维数组在PHP
- 如何在PHP中截断字符串最接近于一定数量的字符?
- PHP错误:“zip扩展名和unzip命令都没有,跳过。”
- Nginx提供下载。php文件,而不是执行它们
- Json_encode()转义正斜杠
- 如何在PHP中捕获cURL错误
- 如何要求一个分叉与作曲家?
- 如何在php中创建可选参数?
- 在文本文件中创建或写入/追加
- 为什么PHP的json_encode函数转换UTF-8字符串为十六进制实体?
- 如何从一个查询插入多行使用雄辩/流利
- 在PHP单元测试执行期间,如何在CLI中输出?