PHP-də OOP-də instanceof operatoru və irs
Gəlin instanceof operatorundan istifadə edərkən irsin xüsusiyyətlərini nəzərdən keçirək. Tutaq ki, bizim valideyn sinif və uşaq sinif var:
<?php
// Valideyn sinif:
class ParentClass
{
}
// Uşaq sinif:
class ChildClass extends ParentClass
{
}
?>
Gəlin uşaq sinifindən bir obyekt yaradaq:
<?php
$obj = new ChildClass;
?>
İndi instanceof köməyi ilə yoxlayaq, obyektimizin ParentClass sinfinə və ChildClass sinfinə aid olub-olmadığını:
<?php
var_dump($obj instanceof ChildClass); // true çap edəcək
var_dump($obj instanceof ParentClass); // həmçinin true çap edəcək
?>
Nümunədən gördüyünüz kimi - instanceof operatoru yoxlama zamanı valideyn və uşaq sinifləri arasında fərq qoymur.
Səhv etməyin - əgər obyekt həqiqətən də valideyn sinfindən olarsa, onda, əlbəttə ki, uşaq sinfinə aid olmasını yoxlamaq false qaytaracaq:
<?php
$obj = new ParentClass; // valideyn sinfinin obyekti
var_dump($obj instanceof ParentClass); // true çap edəcək
var_dump($obj instanceof ChildClass); // false çap edəcək
?>
User sinfi yaradın, onun public xüsusiyyətləri name və surname olsun.
User sinfindən miras alan və salary xüsusiyyəti əlavə edən Employee sinfini yaradın.
Public xüsusiyyətləri name və population olan City sinfini yaradın.
User sinfindən 3 obyekt, Employee sinfindən 3 obyekt, City sinfindən 3 obyekt yaradın və onları ixtiyari qaydada $arr massivinə yazın.
$arr massivini tsikl ilə dolaşın və ekranda User sinfinə və ya bu sinfin varisinə aid olan obyektlərin name xüsusiyyətlərini sütun şəklində çap edin.
$arr massivini tsikl ilə dolaşın və ekranda User sinfinə və ya bu sinfin varisinə aid olmayan obyektlərin name xüsusiyyətlərini sütun şəklində çap edin.
$arr massivini tsikl ilə dolaşın və ekranda dəqiq User sinfinə aid olan, yəni nə City sinfinə nə də Employee sinfinə aid olmayan obyektlərin name xüsusiyyətlərini sütun şəklində çap edin.