property_exists
PHP Manual
PHP Manual»Funciones de Clases/Objetos»property_exists

property_exists

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

property_exists — Verifica si un objeto o una clase posee una propiedad

Descripción

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

Esta función verifica si la propiedad property existe en la clase especificada.

Nota:

property_exists() devuelve true incluso si la propiedad tiene un valor null, a diferencia de la función isset().

Parámetros

object_or_class

El nombre de la clase o un objeto de la clase a probar

property

El nombre de la propiedad

Valores devueltos

Devuelve true si la propiedad existe, false si no existe.

Ejemplos

Ejemplo #1 Ejemplo con property_exists()

<?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() devuelve true independientemente de la visibilidad de la propiedad, detecta las propiedades dinámicas añadidas a las instancias (cuando la clase utiliza #[AllowDynamicProperties]) e ignora los métodos mágicos __isset y __get.

Ejemplo #2 Visibilidad, propiedades dinámicas y métodos mágicos

<?php

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

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

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

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

var_dump(property_exists($instance, 'public'));          // true  (pública)
var_dump(property_exists($instance, 'private'));         // true  (visibilidad ignorada)
var_dump(property_exists($instance, 'protectedStatic')); // true  (visibilidad ignorada)
var_dump(property_exists($instance, 'instanced'));       // true  (propiedad dinámica en la instancia)
var_dump(property_exists($instance, 'undefined'));       // false (no declarada, __isset ignorado)

var_dump(property_exists(MyClass::class, 'public'));    // true
var_dump(property_exists(MyClass::class, 'instanced')); // false (las propiedades dinámicas no están en la clase)
var_dump(property_exists(MyClass::class, 'undefined')); // false

?>

El ejemplo anterior mostrará:

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

Notas

Nota:

El uso de esta función utilizará todos los autoloaders registrados si la clase no es conocida aún.

Nota:

La función property_exists() no puede detectar las propiedades que son accesibles utilizando el método mágico __get.

Véase también

To Top