dポイントプレゼントキャンペーン実施中!

$obj = new Car();

としたとき、
$obj変数がCarクラスのインスタンスであるということをチェックしたいのですが、どのような手段がありますでしょうか。

もしかして、PHPでは無理ですか?

よろしくお願いします。

A 回答 (2件)

何か調べてたら


instanceof演算子なるものが
http://jp2.php.net/manual/en/language.operators. …
    • good
    • 0
この回答へのお礼

どひゃーーーー
Googleで「PHP instanceof」で調べたら1番ですねそのページ・・

どうもすみませんお騒がせしました。

お礼日時:2008/06/04 19:43

この回答への補足

補足します。

一応Javaでいうところどのようなことがしたいのかを書きます。
-------------------------------------------------------------
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;

public class InstanceofTest {
 public static void main(String[] args) {
  ArrayList<String> al = new ArrayList<String>();
  System.out.println("al instanceof ArrayList : " + (al instanceof ArrayList));
  System.out.println("al instanceof AbstractList : " + (al instanceof AbstractList));
  System.out.println("al instanceof List : " + (al instanceof List));
 }
}
------------------------------------------------------------
結果:(つまり継承しているか、実装しているかがtrueとして分かる。)
al instanceof ArrayList : true
al instanceof AbstractList : true
al instanceof List : true


PHPだと、継承元の型での引数としては渡せることは渡せるのですが、
やはり先に型チェックしてから渡したい場面もあるので。
--------------------------------------------------------------
interface Runnable {
}

class Vehicle {
}

class Car extends Vehicle implements Runnable {
}

class VehicleRepairer {
 public static function fix(Vehicle $vehicle) {
  echo get_class($vehicle);
 }
}

// インターフェイスは型として認められない?
// インターフェイスの存在意義は?
//class Fuel {
// public static function supply(Runnable $runnnable) {
//  echo get_class($runnable);
// }
//}

$car = new Car();
VehicleRepairer::fix($car);
//Fuel::supply($car);
-----------------------------------------------------------
結果:
Car


意図するところ分かって頂けたでしょうか。
よろしくお願いします。

補足日時:2008/06/04 08:41
    • good
    • 0
この回答へのお礼

himajin100000さんありがとうございます。

すみません、ついでにもう1つ・・。
CarがVehicleを継承していること、Runnableを実装していることを調べるにはどうすればいいのでしょうか。

--------------------------------------------------
interface Runnable {
}

class Vehicle {
}

class Car extends Vehicle implements Runnable {
}

$car = new Car();
echo get_class($car);
---------------------------------------------------

結果:Car
(つまりVehicleを継承していることとRunnableを実装していることはわからない)

お礼日時:2008/06/03 20:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!