Pertanyaan Dapatkah saya memeriksa apakah suatu objek adalah jenis kelas tertentu, dalam PHP? [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Contoh: Metode seharusnya mengembalikan instance dari SpecificClass. Bagaimana saya dapat memeriksa nilai pengembalian itu jika berasal dari kelas itu?


34
2017-12-27 10:50


asal


Jawaban:


Anda dapat menggunakan instanceof operator, untuk memeriksa apakah suatu objek merupakan turunan dari:

  • Kelas
  • Atau kelas anak dari kelas itu
  • Atau sebuah instance dari kelas yang mengimplementasikan antarmuka

Yang berarti bahwa itu tidak dapat digunakan untuk mendeteksi apakah objek Anda adalah sebuah instance dari a specific kelas - karena akan mengatakan "ya" jika objek Anda adalah turunan kelas anak dari kelas itu.


Misalnya, bagian kode ini:

class ClassA {}
class ClassB extends ClassA {}

$a = new ClassB();
if ($a instanceof ClassA) {
    echo '$a is an instanceof ClassA<br />';
}
if ($a instanceof ClassB) {
    echo '$a is an instanceof ClassB<br />';
}

Anda akan mendapatkan output ini:

$a is an instanceof ClassA
$a is an instanceof ClassB

$a, dengan cara, adalah contoh dari ClassA, sebagai ClassB adalah kelas anak ClassA.

Dan tentu saja, $a juga merupakan contoh dari ClassB - lihat garis di mana itu ditentukan.


59
2017-12-27 10:53



Anda dapat menggunakan instanceof operator atau adalah fungsi.

is_a berguna jika Anda ingin meneruskan string dengan nama kelas (dalam basis kode yang lebih dinamis).


6
2017-12-27 12:17



if ($object instanceof classname)
 ....

Manual: Kelas dan Objek dalam PHP5


4
2017-12-27 10:50



Anda tidak dapat memeriksa kembali nilai itu sendiri, tetapi Anda dapat memeriksa kelas yang dikembalikan dari menggunakan 'contoh'. (Dengan dasar yang sama, Anda mungkin menemukan 'get_class'bermanfaat.)


4
2017-12-27 10:55