Ich lerne zu Serializable Schnittstelle.__Destruct-Methode wird korrekt beim Implementieren von Serializable-Schnittstelle in PHP aufgerufen?
php.net angegeben, dass
Dies ruft nicht __destruct() oder andere Nebenwirkungen haben, wenn innerhalb des Verfahrens programmiert.
, die ich nach meinem Sinn in zwei Teile trennen möchte als:
1):__destruct() wird nicht aufgerufen, wenn die Serializable Schnittstelle implementiert. Aber wenn ich __destructor() Methode wie:
class myClass implements Serializable{
public function serialize(){
return 'I am serialized';
}
public function unserialize($serialized){
//--
}
public function __destruct(){
echo "Hello world";
}
}
$obj = new myClass();
Die __destructor Methode funktioniert gut, und dies einfach Ausgabe der folgende:
Hello world
2): Wenn Sie verwenden müssen __destruct() Methode müssen Sie innerhalb der Methode deklarieren. Aber wenn ich in der Methode deklarieren:
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();
Es gibt den folgenden Parserfehler als:
Parse error: syntax error, unexpected 'public' (T_PUBLIC) in .....
Warum php.net falsche Dokumentation enthält, oder kann ich falsch bin. Bitte kann mir jemand über die Dokumentation von __constructor() und __destructor() im Konzept von Serializable Schnittstelle auf der folgenden Referenzseite?
Referenznummer http://php.net/manual/en/class.serializable.php.
Warum haben Sie eine öffentliche Funktion in einer öffentlichen Funktion? Nur neugierig – Akintunde007
Ohk hat es, aber warum php.net sagt, dass innerhalb der Methode deklarieren. siehe den Verweis Link ... –
@MummyDaddy Die Dokumentation sagt nicht, dass Sie die '__destruct()' Methode innerhalb Ihrer 'unserialize() 'Methode deklarieren müssen (und Sie können nicht wie von der Fehlermeldung gesehen). – Progman