property_exists
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
property_exists —
Checks if the object or class has a property
Description
Note:
As opposed to isset(),
property_exists() returns true even if the property
has the value null.
Parameters
object_or_class
-
The class name or an object of the class to test for
property
-
The name of the property
Return Values
Returns true if the property exists, false if it doesn't exist.
Examples
Example #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.
Example #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
?>
The above example will output:
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)
bool(false)
bool(false)
Notes
Note:
Using this function will use any registered
autoloaders if the class is not already known.
Note:
The property_exists() function cannot detect properties
that are magically accessible using the __get
magic method.