PHP ポリモーフィズムとインターフェイス実装のコード例
PHP では、変数の型は定義されていません。変数は、任意の型の値、文字列、オブジェクト、リソースなどを指すことができます。 php5 のポリモーフィズムは変数であるとは言えません。
php5ではメソッドパラメータの型ヒント位置にポリモーフィズムが適用されているとしか言えません。
クラスのサブクラス オブジェクトは、現在の型を型ヒントとして使用して型要件を満たすことができます。このインターフェイスを実装するすべてのクラスは、インターフェイスの型を型ヒントとして使用してメソッド パラメーターの要件を満たすことができます。簡単に言えば、クラスはその親クラスの ID と、実装されたインターフェイス
を持ちます。ポリモーフィズムはインターフェイス
を実装することによって実現されます。 次の例では、useradmin クラスの静的メソッドにはユーザー型パラメーターが必要です。
以降の使用では、ユーザー インターフェイスを実装するnormaluser クラスのインスタンスが渡されます。コードは正常に実行されます。
interface user{ // ユーザーインターフェース
public function getname();
public function setname($_name);
}
class Normaluserimplements user { // インターフェースを実装するクラス。
private $name;
public function getname(){
return $this->name;
}
public function setname( $ _name){
$this->name = $_name;
}
}
class useradmin{ //Operation.
public static function changeusername(user $_user, $ _username){
$_user->setname($_username);
}
}
$normaluser = newnormaluser();
useradmin::changeusername($normaluser) , "tom");//ここで渡される www.3ppt.com は、normaluser のインスタンスです。
echo $normaluser->getname();
?>
php インターフェイス クラス:interface
実際、その機能は非常に単純です。多くの人が一緒にプロジェクトを開発する場合、全員が他の人が作成したいくつかのクラスを呼び出すことがあります。関数実装メソッドの名前はどのように指定されますか? このとき、インターフェイス クラスを定義するときに、その中のメソッドは次のようなサブクラスによって実装される必要があります。コードは次のとおりです。
インターフェイス shop
{
public function buy($gid);
public function sell($gid);
public function view($gid);
}
ショップ インターフェイス クラスを宣言し、buy、sell、view の 3 つのメソッドを定義します。このクラスを継承するすべてのサブクラスは、これら 3 つのメソッドを実装する必要があります。サブクラスがこれらを実装していない場合、機能しません。実際、インターフェイス クラスは、端的に言えば、クラスのテンプレートであり、クラスの規則です。このカテゴリに属する場合は、どのような方法であっても、私の規則に従わなければなりません。
コードは次のとおりです:
class Baseshopimplements shop
{
public function buy($gid)
{
echo('ID の製品を購入します:'.$gid.');
}
public function sell($gid)
{
echo('あなたID:'.$gid.'Product');
}
public function view($gid)
{
echo('ID: ' の製品を閲覧しました。 $gid.');
}
}
以下は短縮メソッドです
interface myusbkou
{
function type();//type
function action();//実行された操作
}
class zipimplements myusbkou
{ //インターフェースを継承
function type()
「; class mp3implements myusbkou
{
function type()
{
echo "mp3的1.0接続";
}
function action()
{
echo "--->必要mp3 1.0驱动
";
}
}
class mypc
{
function usbthing($thing)
{
$thing->type();
$thing->action();
}
}
$p=new mypc();
$mp3=new mp3();
$zip=new zip();
$p->usbthing($mp3);
$p->usbthing($zip);
?>