Wordpressコアを調べていたところ、次の機能が見つかりました。
function unserialize ( $data ) {
return unserialize( $data );
}
まず、ネイティブのphp関数以降にunserializeが定義されている理由すらわかりません。第二に、無限再帰を停止する条件なしに再帰的に定義されているので、ここで何が起こっているのでしょうか。
私に骨を投げてください。私はこのようなものの初心者です。
Wordpressコアを調べていたところ、次の機能が見つかりました。
function unserialize ( $data ) {
return unserialize( $data );
}
まず、ネイティブのphp関数以降にunserializeが定義されている理由すらわかりません。第二に、無限再帰を停止する条件なしに再帰的に定義されているので、ここで何が起こっているのでしょうか。
私に骨を投げてください。私はこのようなものの初心者です。
これは、クラスのメソッド定義である必要があります。例:
class SomeClass
{
function unserialize($data)
{
return unserialize($data);
}
// ...
}
そうしないと、再宣言できないという致命的なエラーが発生しますunserialize()
。
unserialize()
クラスにメソッドを追加するだけです。unserialize()
次に、このメソッドはPHPのネイティブ関数を呼び出します。かなりばかげているようですが、その後、私はWordpressを書きませんでした。
問題の方法を見つけたと思います: wp-includes/rss.php
(783行目)。そしてそれは確かにRSSCache
クラスのメソッドです。
将来、独自のシリアル化ルーチンを作成したい場合や、のサブクラスにRSSCache
独自のserialize()
andが含まれている可能性があると思いunserialize()
ます。
NullUserExceptionはそれを正しく持っています。説明の限りでは、これが私のベストショットです。
たとえば、ある日、PHPがunserialize関数を廃止することを決定したとします。突然、コード内の「unserialize()」を見つけることができるすべての場所を新しい関数名に変更し、場合によっては書き直しを行う必要があります。ただし、WordPressのように独自の関数を使用する場合は、unserialize関数のバージョンを一度変更するだけで、使用するすべての場所で変更する必要はありません。