2021年4月14日

摘要: <?php /** * PS:关于预定义接口Iterator, ArrayAccess, Countable的文章已经介绍过了,不认识的可以往前翻翻 */ class SplDoublyLinkedList implements Iterator, ArrayAccess, Countable { 阅读全文
posted @ 2021-04-14 10:07 narwhalYel 阅读(93) 评论(0) 推荐(0)

2021年4月9日

摘要: serialize() 函数会检查类中是否存在一个魔术方法 __serialize()。如果存在,该方法将在任何序列化之前优先执行。它必须以一个代表对象序列化形式的 键/值 成对的关联数组形式来返回,如果没有返回数组,将会抛出一个 TypeError 错误。   如果类中同时定义了 __serialize() 和 __sleep() 两个魔术方法,则只有 __serialize() 方法会被调用。 __sleep() 方法会被忽略掉。如果对象实现了 Serializable 接口,接口的 serialize() 方法会被忽略,做为代替类中的 __serialize() 方法会被调用。 __serialize()的目的是定义一个序列化友好的对象的任意表示。数组的元素可能对应于对象的属性,但这不是必需的。相反,unserialize()检查是否存在具有神奇名称__unserialize()的函数。如果存在,此函数将传递从__serialize()返回的恢复数组。然后,它可以根据需要从该数组中恢复对象的属性。 阅读全文
posted @ 2021-04-09 15:09 narwhalYel 阅读(1450) 评论(0) 推荐(0)
摘要: 在 PHP 5.3.0 及以上版本时,当尝试以调用函数的方式调用一个类对象时,__invoke() 方法会被自动调用。 阅读全文
posted @ 2021-04-09 14:56 narwhalYel 阅读(416) 评论(0) 推荐(0)
摘要: 在PHP 5.6.0中,当转储一个对象以获得应该显示的属性时,var_dump()调用此方法。如果该方法没有在对象上定义,那么将显示所有公共的、受保护的和私有的属性。 阅读全文
posted @ 2021-04-09 11:53 narwhalYel 阅读(232) 评论(0) 推荐(0)
摘要: __toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误。 阅读全文
posted @ 2021-04-09 11:45 narwhalYel 阅读(315) 评论(0) 推荐(0)
摘要: 当调用当前环境下未定义或不可见的类属性或方法时,重载(更像一个钩子)方法会被调用。将使用不可访问属性(inaccessible properties)和不可访问方法(inaccessible methods)来称呼这些未定义或不可见的类属性或方法。 阅读全文
posted @ 2021-04-09 11:29 narwhalYel 阅读(90) 评论(0) 推荐(0)
摘要: PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。 和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。此外也和构造函数一样,子类如果自己没有定义析构函数则会继承父类的。 析构函数即使在使用 exit() 终止脚本运行时也会被调用。在析构函数中调用 exit() 将会中止其余关闭操作的运行。 阅读全文
posted @ 2021-04-09 10:48 narwhalYel 阅读(435) 评论(0) 推荐(0)
摘要: PHP 允许开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。 阅读全文
posted @ 2021-04-09 10:07 narwhalYel 阅读(449) 评论(0) 推荐(0)