Clases predefinidas

Esta sección enumera las clases predefinidas estándar. Varias extensiones definen otras clases, las cuales se describen en sus respectivas secciones.

Clases definidas estándar

Estas clases están definidas en el conjunto estándar de funciones que se incluyen en la compilación de PHP.

Directory
Creada por dir().
stdClass
Creada en la conversión al tipo object.
__PHP_Incomplete_Class
Posiblemente creada por unserialize().

Clases predefinidas a partir de PHP 5

Estas clases predefinidas adicionales se introdujeron en PHP 5.0.0.

Exception
ErrorException
Disponible desde PHP 5.1.0.
php_user_filter

Closure

La clase final predefinida Closure fue introducida en PHP 5.5.0. Se usa para representar funciones anónimas.

Para más información, véase la página de su clase.

Generator

La clase final predefinida Generator fue introducida en PHP 5.5.0. Se usa para representar generadores.

Para más información, véase la página de su clase.

Clases especiales

Los siguientes identificadores no se pueden usar como nombres de clase, dado que tienen un propósito especial.

self
Clase actual.
static
Clase actual en tiempo de ejecución.
parent
Clase madre.
add a note add a note

User Contributed Notes 6 notes

up
2
spark at limao dot com dot br
2 years ago
if you want a Dynamic class you can extend from, add atributes AND methods on the fly you can use this:
<?php
   
class Dynamic extends stdClass{
        public function
__call($key,$params){
            if(!isset(
$this->{$key})) throw new Exception("Call to undefined method ".get_class($this)."::".$key."()");
           
$subject = $this->{$key};
           
call_user_func_array($subject,$params);
        }
    }
?>

this will accept both arrays, strings and Closures:
<?php
    $dynamic
->myMethod = "thatFunction";
   
$dynamic->hisMethod = array($instance,"aMethod");
   
$dynamic->newMethod = array(SomeClass,"staticMethod");
   
$dynamic->anotherMethod = function(){
        echo
"Hey there";
    };
?>

then call them away =D
up
2
Typer85 at gmail dot com
7 years ago
In response to the note below mine,

This list is not incomplete. Read the Manual folks, its listed there plain and simple:

"This section lists standard predefined classes. Miscellaneous extensions define other classes which are described in their reference."

Depending on what extensions you have, they might define their own classes. This list is just the standard classes as defined by PHP with no regards to extensions.
up
1
unknown
11 years ago
It's handy to have a array of the reserved classes.....
var_dump (get_declared_classes ());
up
1
Ashley Dambra
2 months ago
Here a simple class that allow to set anonymous function. It's an optimised class of stdClass.

<?php
class stdObject {
    public function
__construct(array $arguments = array()) {
        if (!empty(
$arguments)) {
            foreach (
$arguments as $property => $argument) {
                if (
$argument instanceOf Closure) {
                   
$this->{$property} = $argument;
                } else {
                   
$this->{$property} = $argument;
                }
            }
        }
    }

    public function
__call($method, $arguments) {
        if (isset(
$this->{$method}) && is_callable($this->{$method})) {
            return
call_user_func_array($this->{$method}, $arguments);
        } else {
            throw new
Exception("Fatal error: Call to undefined method stdObject::{$method}()");
        }
    }
}

$person = new stdObject(array(
   
"name" => "nick",
   
"age" => 23,
   
"friends" => array("frank", "sally", "aaron"),
   
"sayHi" => function() {
        return
"Hello there";
    }
));

$person->sayHi2 = function() {
    return
"Hello there 2";
};

$person->test = function() {
    return
"test";
};

var_dump($person->name, $person->test(), $person->sayHi2());
?>
up
1
wyattstorch42 at outlook dot com
3 months ago
If you call var_export() on an instance of stdClass, it attempts to export it using ::__set_state(), which, for some reason, is not implemented in stdClass.

However, casting an associative array to an object usually produces the same effect (at least, it does in my case). So I wrote an improved_var_export() function to convert instances of stdClass to (object) array () calls. If you choose to export objects of any other class, I'd advise you to implement ::__set_state().

<?php
/**
 * An implementation of var_export() that is compatible with instances
 * of stdClass.
 * @param mixed $variable The variable you want to export
 * @param bool $return If used and set to true, improved_var_export()
 *     will return the variable representation instead of outputting it.
 * @return mixed|null Returns the variable representation when the
 *     return parameter is used and evaluates to TRUE. Otherwise, this
 *     function will return NULL.
 */
function improved_var_export ($variable, $return = false) {
    if (
$variable instanceof stdClass) {
       
$result = '(object) '.improved_var_export(get_object_vars($variable), true);
    } else if (
is_array($variable)) {
       
$array = array ();
        foreach (
$variable as $key => $value) {
           
$array[] = var_export($key, true).' => '.improved_var_export($value, true);
        }
       
$result = 'array ('.implode(', ', $array).')';
    } else {
       
$result = var_export($variable, true);
    }

    if (!
$return) {
        print
$result;
        return
null;
    } else {
        return
$result;
    }
}

// Example usage:
$obj = new stdClass;
$obj->test = 'abc';
$obj->other = 6.2;
$obj->arr = array (1, 2, 3);

improved_var_export((object) array (
   
'prop1' => true,
   
'prop2' => $obj,
   
'assocArray' => array (
       
'apple' => 'good',
       
'orange' => 'great'
   
)
));

/* Output:
(object) array ('prop1' => true, 'prop2' => (object) array ('test' => 'abc', 'other' => 6.2, 'arr' => array (0 => 1, 1 => 2, 2 => 3)), 'assocArray' => array ('apple' => 'good', 'orange' => 'great'))
*/
?>

Note: This function spits out a single line of code, which is useful to save in a cache file to include/eval. It isn't formatted for readability. If you want to print a readable version for debugging purposes, then I would suggest print_r() or var_dump().
up
-3
Simon Kissane
9 years ago
The above list is incomplete. For example, on my PHP 5.0 configuration (yours may differ depending on the extensions you choose to install), the following classes are predefined:

== "Core" ==
stdClass
Exception
__PHP_Incomplete_Class
php_user_filter
Directory

== Reflection API ==
ReflectionException
Reflection
ReflectionFunction
ReflectionParameter
ReflectionMethod
ReflectionClass
ReflectionObject
ReflectionProperty
ReflectionExtension

== SQLLite ==
SQLiteDatabase
SQLiteResult
SQLiteUnbuffered
SQLiteException

== Standard PHP Lib. ==
RecursiveIteratorIterator
FilterIterator
ParentIterator
LimitIterator
CachingIterator
CachingRecursiveIterator
ArrayObject
ArrayIterator
DirectoryIterator
RecursiveDirectoryIterator

== SimpleXML ==
SimpleXMLElement
SimpleXMLIterator

== DOM/XSL/XPath extensions ==
DOMException
DOMStringList
DOMNameList
DOMImplementationList
DOMImplementationSource
DOMImplementation
DOMNode
DOMNameSpaceNode
DOMDocumentFragment
DOMDocument
DOMNodeList
DOMNamedNodeMap
DOMCharacterData
DOMAttr
DOMElement
DOMText
DOMComment
DOMTypeinfo
DOMUserDataHandler
DOMDomError
DOMErrorHandler
DOMLocator
DOMConfiguration
DOMCdataSection
DOMDocumentType
DOMNotation
DOMEntity
DOMEntityReference
DOMProcessingInstruction
DOMStringExtend
DOMXPath
XSLTProcessor
To Top