Overview
KB
Technical FAQ
PHP Manual
CSS2 Manual
HTML Manual
JS Guide
JS Reference
PhpDock Manual
Nu-Coder Manual
PhpExpress Manual
PHP Joomla
Development
Learn PHP
 
<method_existstrait_exists>
^Classes/Object FunctionsLast updated: Mon, 26 Oct 2026

property_exists

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

property_exists — Checks if the object or class has a property

Description

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

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

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.

See Also


<method_existstrait_exists>
^Classes/Object FunctionsLast updated: Mon, 26 Oct 2026