質問: **リンク先に掲載されている下記コードについて** > > ジェネレータは Iterator インターフェイスを実装するクラスで次のメソッドが定義されています > > > ``` final class Generator implements Iterator { void rewind(); ``` --- **公式ドキュメントに書いている内容と同じですか?** ・公式ドキュメントにclassと記載がないのはなぜ? ・クラス概要だから、ソースコードそのものを掲載しているわけではない?? --- **実際にソースコード上で確認するには?** ・GitHUB上にあるのかと思い、検索したのですが、見つかりません ・ここではない?? ・あるいは、コンパイル前のC言語を検索しても見つからない?? ---
回答: > > 公式ドキュメントにclassと記載がないのはなぜ? > > > タイトル等からクラスであることはわかりますし、単に省略しているだけでしょう。 そもそもPHPのメソッド定義に戻り値の型は書けませんから、マニュアルの表記はもちろん、ご指摘のサイトに書かれているのも疑似コードにすぎません。 > > 実際にソースコード上で確認するには? > > > 当該クラスがPHPコードで実装されているわけではないのはご想像の通りです。 ソースコード中で Generator クラスの定義を行っている個所は・・・多分ここですね。 `ZEND_ME` マクロで定義された各メソッドの実体は、同じファイルに `ZEND_METHOD(Generator, ...)` で書かれています。 ちなみに今回はキーワード「Generator」言語「C」で検索してこれを見つけましたが、ここでも使われている `INIT_CLASS_ENTRY` とクラス名で探すといいかもしれません。 といっても SPL のクラスは `REGISTER_SPL_STD_CLASS_EX` なる独自のマクロが使われていましたが。。