J'apprends à Serializable interface.La méthode __destruct est appelée correctement lors de l'implémentation de l'interface Serializable dans PHP?
php.net a déclaré que
Cela n'invoque __destruct() ou avoir tout autre effet secondaire à moins programmé à l'intérieur du procédé.
qui je voudrais séparer en deux parties selon mon sens que:
1):__destruct() est pas appelé lors de la mise en oeuvre du Serialisable l'interface. Mais quand je l'utilise __destructor() Méthode comme:
class myClass implements Serializable{
public function serialize(){
return 'I am serialized';
}
public function unserialize($serialized){
//--
}
public function __destruct(){
echo "Hello world";
}
}
$obj = new myClass();
Le __destructor méthode fonctionne très bien et cela simplement génèrerait les éléments suivants:
Hello world
2): Si vous devez utiliser __destruct() méthode que vous devez déclarer à l'intérieur de la méthode. Mais quand je déclare dans la méthode comme:
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();
Il renvoie l'erreur d'analyse suivant comme:
Parse error: syntax error, unexpected 'public' (T_PUBLIC) in .....
Pourquoi php.net fournit des documents faux ou peut-être je me trompe. S'il vous plaît quelqu'un peut-il m'apprendre sur la documentation de __constructor() et __destructor() dans le concept de Serializable interface sur la page de référence suivante?
Lien de référence http://php.net/manual/en/class.serializable.php.
Pourquoi avez-vous une fonction publique dans une fonction publique? Juste curieux – Akintunde007
Ohk l'a eu, mais pourquoi php.net dit que déclarer à l'intérieur de la méthode. voir le lien de référence ... –
@MummyDaddy La documentation ne dit pas que vous devez déclarer la méthode '__destruct()' dans votre méthode 'unserialize()' (et vous ne pouvez pas voir le message d'erreur). – Progman