property_exists
PHP Manual
PHP Manual»Функції Класів чи Об'єктів»property_exists

property_exists

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

property_exists — Checks if the object or class has a property

Опис

function property_exists(object|string $object_or_class, string $property): bool

This function checks if the given property exists in the specified class.

Зауваження:

As opposed with isset(), property_exists() returns true even if the property has the value null.

Параметри

object_or_class

The class name or an object of the class to test for

property

The name of the property

Значення, що повертаються

Returns true if the property exists, false if it doesn't exist.

Приклади

Приклад #1 A property_exists() example

<?php

class myClass {
    public $mine;
    private $xpto;
    static protected $test;

    static function test() {
        var_dump(property_exists('myClass', 'xpto')); //true
    }
}

var_dump(property_exists('myClass', 'mine'));   //true
var_dump(property_exists(new myClass, 'mine')); //true
var_dump(property_exists('myClass', 'xpto'));   //true
var_dump(property_exists('myClass', 'bar'));    //false
var_dump(property_exists('myClass', 'test'));   //true
myClass::test();

?>

property_exists() returns true regardless of property visibility, detects dynamic properties added to instances (when the class uses #[AllowDynamicProperties]), and ignores __isset and __get magic methods.

Приклад #2 Visibility, dynamic properties, and magic methods

<?php

#[AllowDynamicProperties]
class MyClass {
    public $public;
    private $private;
    static protected $protectedStatic;

    // ignored by property_exists
    public function __isset(string $name): bool {
        return true;
    }

    // ignored by property_exists
    public function __get(string $name): string {
        return '';
    }
}

$instance = new MyClass();
$instance->instanced = 'abc';

var_dump(property_exists($instance, 'public'));          // true  (public)
var_dump(property_exists($instance, 'private'));         // true  (visibility ignored)
var_dump(property_exists($instance, 'protectedStatic')); // true  (visibility ignored)
var_dump(property_exists($instance, 'instanced'));       // true  (dynamic property on instance)
var_dump(property_exists($instance, 'undefined'));       // false (not declared, __isset ignored)

var_dump(property_exists(MyClass::class, 'public'));    // true
var_dump(property_exists(MyClass::class, 'instanced')); // false (dynamic props not on class)
var_dump(property_exists(MyClass::class, 'undefined')); // false

?>

Поданий вище приклад виведе:

bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
bool(false)
bool(false)

Примітки

Зауваження:

Ця функція буде використовувати будь-який зареєстрований автозавантажувач, якщо клас ще не відомий.

Зауваження:

The property_exists() function cannot detect properties that are magically accessible using the __get magic method.

Прогляньте також

To Top