Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
PHP Поиск
class MyClass
{
}
class NotMyClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
Результат выполнения данного примера:
bool(true)
bool(false)
Оператор instanceof также может быть использован для определения, наследует ли определенный объект какому-либо классу:
Пример #2 Использование instanceof с наследуемыми классами
class ParentClass
{
}
class MyClass extends ParentClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof ParentClass);
Результат выполнения данного примера:
bool(true)
bool(true)
Для проверки непринадлежности объекта некоторому классу, используйте логический оператор not.
Пример #3 Использование instanceof для проверки того, что объект не является экземпляром класса
class MyClass
{
}
$a = new MyClass;
var_dump(!($a instanceof stdClass));
Результат выполнения данного примера:
bool(true)
Ну и наконец, instanceof может быть также использован для проверки реализации объектом некоторого интерфейса:
Пример #4 Использование instanceof для класса
interface MyInterface
{
}
class MyClass implements MyInterface
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof MyInterface);
Результат выполнения данного примера:
bool(true)
bool(true)
Хотя instanceof обычно используется с прямо указанным именем класса, он также может быть использован с другим объектом или строковой переменной:
Пример #5 Использование instanceof с другими переменными
interface MyInterface
{
}
class MyClass implements MyInterface
{
}
$a = new MyClass;
$b = new MyClass;
$c = 'MyClass';
$d = 'NotMyClass';
var_dump($a instanceof $b); // $b это объект класса MyClass
var_dump($a instanceof $c); // $c это строка 'MyClass'
var_dump($a instanceof $d); // $d это строка 'NotMyClass'
Результат выполнения данного примера:
bool(true)
bool(true)
bool(false)
Оператор instanceof не генерирует никаких ошибок, если проверяемая переменная не является объектом. В этом случае он просто возвращает FALSE. Константы, тем не менее, не допускаются.
Пример #6 Пример использования оператора instanceof для проверки других переменных
$a = 1;
$b = NULL;
$c = imagecreate(5, 5);
var_dump($a instanceof stdClass); // $a это целое типа integer
var_dump($b instanceof stdClass); // $b это NULL
var_dump($c instanceof stdClass); // $c это значение типа resource
var_dump(FALSE instanceof stdClass);
Результат выполнения данного примера:
bool(false)
bool(false)
bool(false)
PHP Fatal error: instanceof expects an object instance, constant given
Есть несколько подводных камней, которых следует остерегаться. До версии PHP 5.1.0, instanceof вызывал __autoload() если имя класса не существовало. Вдобавок, если класс не был загружен, происходила фатальная ошибка. Это можно было обойти с помощью динамической ссылки на класс или использования строковой переменной с именем класса:
Пример #7 Избежание поиска класса и фатальных ошибок с instanceof в PHP 5.0
$d = 'NotMyClass';
var_dump($a instanceof $d); // нет фатальной ошибки
Результат выполнения данного примера:
bool(false)
Оператор instanceof был добавлен в PHP 5. До этого времени использовалась функция is_a(), но позже is_a() была помечена устаревшей в пользу instanceof. Учтите, что с версии PHP 5.3.0, is_a() больше не является устаревшей.
Ознакомьтесь также с описанием функций get_class() и is_a().
User Contributed Notes 17 notes
3
knarlin at yahoo dot com dot au ¶9 months ago
var_dump(!($a instanceof stdClass));
3
Sudarshan Wadkar ¶1 year ago
namespace Bar1;
{
class Foo1{ }
}
namespace Bar2;
{
class Foo2{ }
}
2
fbableus ¶2 years ago
$classname = 'MyClass';
if( $classname instanceof MyParentClass) echo 'Child of it';
else echo 'Not child of it';
2
jtaal at eljakim dot nl ¶5 years ago
class myclass {
function mymethod($otherObject) {
if ($otherObject instanceof self) {
$otherObject->mymethod(null);
}
return 'works!';
}
}
$a = new myclass();
print $a->mymethod($a);
1
phil dot taylor at gmail dot com ¶3 years ago
'ClassA' instanceof 'ClassB';
1
jphaas at gmail dot com ¶6 years ago
class A { }
class B { }
$a = new A;
$b = new B;
$a2 = new A;
echo $a instanceOf $a; // true
echo $a instanceOf $b; // false
echo $a instanceOf $a2; // true
0
info at pkrules dot in ¶1 month ago
class MyClass{}
class Test extends MyClass{
public function checkObjectArray(array $array,$classname,$strict=false){
if(!$strict){
foreach($array as $element){
if(!($element instanceOf $classname)){//we can use typehint objects
INSIDE an array
echo "false";
echo "<br />";
break;
}
else{
print "<br />true (if)";
}
}
}
else{
foreach($array as $element){
if(get_class($element)!=$classname){// or we can use this function to
check the classes inside this array
echo "false (else)";
}
}
}
echo "<br />true";
}
}
$ob=new Test;
$a=new MyClass();
$array=array($a);
$ob->checkObjectArray($array,'MyClass');
0
wbcarts at juno dot com ¶1 year ago
class Circle
{
protected $radius = 1.0;
/*
* This function is the reason we are going to use the
* instanceof operator below.
*/
public function setRadius($r)
{
$this->radius = $r;
}
public function __toString()
{
return 'Circle [radius=' . $this->radius . ']';
}
}
class Point
{
protected $x = 0;
protected $y = 0;
/*
* This function is the reason we are going to use the
* instanceof operator below.
*/
public function setLocation($x, $y)
{
$this->x = $x;
$this->y = $y;
}
public function __toString()
{
return 'Point [x=' . $this->x . ', y=' . $this->y . ']';
}
}
0
mauritsdajong at gmail dot com ¶3 years ago
public checkObjectsArray(array $array, $classname, $strict = false) {
if (!$strict) {
foreach ($array as $element) {
if (!($element instanceof $classname)) {
return false;
}
}
}
else {
foreach ($array as $element) {
if (get_class($element) != $classname) {
return false;
}
}
}
return true;
}
0
kevin dot benton at beatport dot com ¶5 years ago
class A {}
class X {}
//parse error from !
if (new X !instanceof A) {
throw new Exception('X is not an A');
}
//proper way to negate instanceof ?
if (!(new X instanceof A)) {
throw new Exception('X is not an A');
}
0
d dot schneider at 24you dot de ¶8 years ago
function is_instance_of($IIO_INSTANCE, $IIO_CLASS){
if(floor(phpversion()) > 4){
if($IIO_INSTANCE instanceof $IIO_CLASS){
return true;
}
else{
return false;
}
}
elseif(floor(phpversion()) > 3){
return is_a($IIO_INSTANCE, $IIO_CLASS);
}
else{
return false;
}
}
Смотрите также:
Описание на ru2.php.net
Описание на php.ru
.
Прокомментировать/Отблагодарить
Популярное:
- Анализ сайта
- Проверка email
- Чей IP-адрес?
- Чей домен?
- Где телефон?
- Генератор Sitemap
- Примеры Ajax
- Примеры PHP
- Примеры Javascript
- Примеры HTML, CSS
- Бесплатные прокси
- GEO-сервисы
- Сайт в ТОП (SEO)
- Полезные ссылки
- Генератор Robots.txt
Содержание:
- HTML
- Что такое HTML
- <!DOCTYPE>
- Мета теги в <head>
- Тег <base>
- Текст в html
- HTML списки
- Ссылки
- Картинки на сайте
- Таблицы
- Фреймы
- Формы
- DHTML
- Музыка
- Видео
- Карты изображений
- SVG карты
- Графика в HTML
- SSI .shtml
- Таблица цветов RGB
- Правильное
сочетание цветов - Таблица
«безопасных»
цветов - Таблица символов
- Примеры HTML, CSS
- CSS
- JavaScript
- PHP + MySQL
- Введение в PHP
- Основы языка
- Использование
массивов - $_server
- Создание функций
- Строки
- Функции работы
со строками - Объектное
программирование - Формы
- Файлы
- Загрузка файлов
на сервер - MySQL
- Cookie
- htaccess
- Безопасность
- Сессии
- Отправка почты
- Кэширование
- Дата, время
- Математические
функции - Дополнительные
возможности - Регулярные
выражения - Библиотека Curl
- IMAP, POP3, NNTP
- Оптимизация
- Примеры скриптов
- XML + XSLT
- AJAX
- Графика CorelDRAW
- SEO
- Сервисы
- Разное
- Движки сайтов (CMS)
- Регистрация
доменов и хостинг - Заработок для
web-мастеров - Хостинг
- Настройка DNS
- ADSL
- RSS
- ActiveX и HTML
- Паролирование
страницы - HTTP коды
- HTTP протокол
- HTTP заголовки
- Прячем ссылки
- ☠ Черный список
сайтов - ☭ Заработок
в интернете - Термины и
определения - Продажа доменов
- ✉ Настройки
Яндекс-почты - Кнопки социалок
- ☎ Настроки SIP
в телефоне - Создание
поискового плугина - Сервис
коротких ссылок - Telegram: бот, ссылки
- Шаблоны сайтов
- Друзья
- Задания к л/р
- Примеры
зачетных задач
- Статьи, обзоры
- Новости