首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

理解PHP中的stdClass

相信大家跟我一样,会经常看到和下面很类似的PHP代码: 复制代码 $user = new stdClass(); $user->name = 'gouki'; 这样的代码,这是干嘛用的呢?...翻开手册,搜索stdClass,你会发现,手册上几乎没有介绍,如果你再次搜索google,看到的也几乎全是英文解释。 其实,stdClass在PHP5才开始被流行。...而stdClass也是zend的一个保留。似乎没有其他作用。也几乎没有任何说明。...或者,我们可以这么理解:stdClass是PHP的一个基,所有的几乎都继承这个,所以任何时候都可以被new,可以让这个变量成为一个object。...同时,这个基又有一个特殊的地方,就是没有方法。 凡是用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。

1.1K90

PHP的stdClass

概述 以下是百度百科对php中的 stdClass的描述: stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留。...stdClass是PHP的一个内部保留,初始时没有成员变量也没成员方法,所有的魔术方法都被设置为NULL.凡是用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。...在百度上搜索,有很多人写的文章中,提到了stdClass是所有的基,但是我试了一下: class Test{} $t = new Test(); var_dump($t instanceof stdClass...); 输出结果:bool(false) 显然,stdClass并不是Test的基,也就是说stdClass不是所有的基。...那么stdClass到底是个什么呢?到底是干什么用的呢? 解惑 既然这个没有成员变量也没有审核魔术方法,那么stdClass到底是个什么玩意?

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP系列 | PHP中的stdClass是什么?

    简介 stdClass 是 PHP 中的空,用于将其他类型转换为对象。它类似于 Java 或 Python 对象。...stdClass 不是对象的基 转换为对象 如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,将会创建一个内置 stdClass 的实例。...stdClass() 的定义 stdClass 是PHP的一个基,几乎所有的都继承这个,任何时候都可以被new,可以让一个变量成为一个对象(object)。...stdClass 的使用 1、存储数据 (1)数组存储 // 定义数组存储个人信息 $personal_array = [ "name" => "Tinywan", "home" =>...并不是 PHP 中对象的基 这里需要注意的是,尽管是泛型stdClass 并不是 PHP 中对象的基,我们可以使用 instanceof 关键字来证明这一点。

    15010

    3分钟短文 | PHP 空对象怎么用,3个例子教会你!

    // 创建属性 'scalar' = 'a' $a = (object) array('property1' => 1, 'property2' => 'b'); 你需要格外注意: stdClass不是基...PHP不会自动从任何继承。所有都是独立的,除非它们显式扩展了另一个。在这方面,PHP与许多面向对象的语言不同。 你无法在代码中定义名为“ stdClass”的。该名称已被系统使用。...你可以定义一个名为“Object”的。也可以定义一个扩展stdClass,但不会获得任何好处,因为stdClass不执行任何操作。..."\n"; // false (no parent) 注意,PHP的是独立存在的,上面的 CTest 也绝不是继承自 stdClass 对象。...写在最后 通过本文,你应该收获一个重要的概念,那就是,PHP 的除非手动严格指定继承,否则都是独立存在的。 同时,PHP 提供了标准的 stdClass 对象用于构建空对象。

    60530

    优雅地创建未定义PHP对象

    优雅地创建未定义PHP对象 在PHP中,如果没有事先准备好,需要创建一个未定义的对象,我们可以采用下面三种方式: new stdClass() new class{} (object)[] 首先是...stdClass,这个是一个空的模板,是PHP的内部保留关键字及名。...可以把它相像成是Java中的Object基,在Java中,所有都天然继承自Object基。而PHP中的这个stdClass则是完全的一个空的模板。你自己新创建的并不是它的子类。...但是用这个模板可以创建一个自己未定义的对象。当然,这个对象内部没有任何东西。 1$a = new stdClass(); 2var_dump($a); new class{}呢?...复杂的对象生成可以使用匿名的方式进行生成。而一些仅需要占位的对象,可以使用stdClass的方法,当然用空数组的方式也很方便。 需要注意的是,数组强转需要遵守类型转换的规则。比如数字下标的问题。

    2.8K10

    从反序列化到类型混淆漏洞——记一次 ecshop 实例利用

    但如果我将反序列化的改成b会发生什么呢?...这是一个前台的入口,但可惜的是引入初始化文件在反序列化之后,这也就导致我们没办法找到可以覆盖变量属性的目标,也就没办法进一步利用。...寻找合适的类属性利用链 在寻找利用链之前,我们可以用 get_declared_classes() 来确定在反序列化时,已经声明定义过的。...在我本地环境下,除了PHP内置以外我一共找到13个 [129]=> string(3) "ECS" [130]=> string(9) "ecs_error" [131]=>...在逐个看这里面的变量时,我们可以敏锐的看到一个特殊的变量,由于ecshop的后台结构特殊,页面内容大多都是由模板编译而成,而这个模板恰好也在init.php中声明 require(ROOT_PATH

    1.2K30
    领券