[PHP-users 11518] メザコヴロミネミュピボザベボヴアアオアオンヴメザコヴロミネミュピボザベボヴアアオアエンヴメザコヴロミネミュピボザベボヴアアオアーンヴクラスのコンストラクタの返値について

KUROSAWA Akira php-users@php.gr.jp
Fri, 15 Nov 2002 14:49:30 +0900


黒澤@部分的に反応 です。

Osamu Shigematsu wrote:
> ところで、Java の imprements に相当することは、
> PHP ではできるんでしょうか?
> # 暗黙の了解ではなくて、ロジックとして。

結論から先に言わせて頂くと
完璧ではありませんが、出来ます。

完璧では。。。と言う前置詞がつく理由ですが

プログラマの観点からすると、Javaのimprementsは
特定のメソッドの実装を強要する仕組みです。
これを実装しないとプログラムを実行することができません。

一方PHPでは、実装しなければならないはずのメソッドを
実装せずに実行してもエラーにはなりません。
と言うよりも、エラーにする仕組みがありません。

ただ、実装しなければならないはずのメソッドを実装せずに
実行して、なお且つ、このメソッドに制御が移ってしまった時に
警告を発することは可能です。

#わかりにくい説明ですいません。

具体的には

Class Hoge {
    function foo() {
        // 継承先のクラスで必ず実装してください。
        echo "ロジックが実装されていません。";
    }
}

として、このHogeクラスをimprementsするクラスとして継承します。
継承先のクラスでメソッドfooを実装せずに呼び出すと、メッセージが
表示されます。

未実装のメソッドを早期に発見できると言うメリットしかありませんが
「暗黙の了解」よりは多少マシかな。。。と (^^;

こんなんで如何でしょうか?

-- 
株式会社システムジェイ
    システム開発グループ
    黒澤 明  kurosawa@systemj.com