【发布时间】:2018-03-19 15:49:48
【问题描述】:
我正在学习Serializable接口。
php.net表示
这不会调用 __destruct() 或有任何其他副作用,除非 在方法内部编写。
我想根据我的感觉分成两部分:
1): __destruct() 在实现 Serializable 接口时不会被调用。但是当我使用 __destructor() 方法时:
class myClass implements Serializable{
public function serialize(){
return 'I am serialized';
}
public function unserialize($serialized){
//--
}
public function __destruct(){
echo "Hello world";
}
}
$obj = new myClass();
__destructor 方法工作正常,它只输出以下内容:
Hello world
2):如果需要使用__destruct()方法,需要在方法内部声明。但是当我在方法内部声明为:
class myClass implements Serializable{
public function serialize(){
return 'I am serialized';
}
public function cutomDest(){
public function __destruct(){
echo "Hello world";
}
}
public function unserialize($serialized){
//--
}
}
$obj = new myClass();
它返回以下解析器错误为:
Parse error: syntax error, unexpected 'public' (T_PUBLIC) in .....
为什么 php.net 提供了错误的文档,或者可能是我错了。请任何人都可以在以下参考页面上的 Serializable 接口的概念中教我有关 __constructor() 和 __destructor() 的文档吗?
【问题讨论】:
-
为什么在一个公共函数里面有一个公共函数?只是好奇
-
哦,明白了,但为什么 php.net 说在方法中声明。查看参考链接...
-
@MummyDaddy 文档没有说您必须在
unserialize()方法中声明__destruct()方法(并且您不能从错误消息中看到)。
标签: php oop serialization serializable