• ベストアンサー

Objectの型チェック

$obj = new Car(); としたとき、 $obj変数がCarクラスのインスタンスであるということをチェックしたいのですが、どのような手段がありますでしょうか。 もしかして、PHPでは無理ですか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

何か調べてたら instanceof演算子なるものが http://jp2.php.net/manual/en/language.operators.type.php

ggaogg
質問者

お礼

どひゃーーーー Googleで「PHP instanceof」で調べたら1番ですねそのページ・・ どうもすみませんお騒がせしました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1
ggaogg
質問者

お礼

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を実装していることはわからない)

ggaogg
質問者

補足

補足します。 一応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 意図するところ分かって頂けたでしょうか。 よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A