Предопределенные классы

В этом разделе перечисляются стандартные предопределенные классы. Разнообразные расширения определяют другие классы, которые описаны в соответствующей справочной информации.

Стандартные определенные классы

Эти классы определены вместе со стандартным набором функций, идущим со сборкой PHP.

Directory
Создается функцией dir().
stdClass
Создается приведением типа к объекту.
__PHP_Incomplete_Class
Возможно создается функцией unserialize().

Предопределенные классы PHP 5

Эти дополнительные предопределенные классы были введены в PHP версии 5.0.0

Exception
ErrorException
Доступно с версии PHP 5.1.0.
php_user_filter

Closure

Предопределенный конечный класс Closure был введен в PHP 5.3.0. Он используется для внутренней реализации анонимных функций.

Для более детальной информации смотрите страницу класса.

Generator

Предопределенный final класс Generator был добавлен в PHP 5.5.0. Он используется для представления генераторов.

Подробности смотрите на странице класса.

Специальные классы

Следующие идентификаторы не могут использоваться в качестве имени класса, так как у них есть специальное назначение.

self
Текущий класс.
static
Текущий класс в рабочем цикле.
parent
Родительский класс.

Коментарии

Автор:
It's handy to have a array of the reserved classes.....
var_dump (get_declared_classes ());
2002-07-23 13:29:06
http://php5.kiev.ua/manual/ru/reserved.classes.html
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.
2007-02-17 10:58:57
http://php5.kiev.ua/manual/ru/reserved.classes.html
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
2011-08-15 17:21:21
http://php5.kiev.ua/manual/ru/reserved.classes.html
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($keytrue).' => '.improved_var_export($valuetrue);
        }
       
$result 'array ('.implode(', '$array).')';
    } else {
       
$result var_export($variabletrue);
    }

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

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

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().
2013-12-24 03:15:11
http://php5.kiev.ua/manual/ru/reserved.classes.html
Автор:
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());
?>
2014-02-19 20:43:50
http://php5.kiev.ua/manual/ru/reserved.classes.html
There comes improved version of amazing snippet posted by which allows dynamic methods generations and works as versatile extension of StdClass:

This one is faster, optimised for closures, and will work only with closures. Compatible: >= PHP 5.6
<?php

class Dynamic extends \stdClass
{
    public function 
__call($key$params)
    {
        if ( ! isset(
$this->{$key})) {
            throw new 
Exception("Call to undefined method " __CLASS__ "::" $key "()");
        }

        return 
$this->{$key}->__invoke(... $params);
    }
}

?>

Usage examples:

<?php
$dynamic               
= new Dynamic();
$dynamic->anotherMethod = function () {
    echo 
"Hey there";
};
$dynamic->randomInt     = function ($min$max) {
    return 
mt_rand($min$max); // random_int($min, $max); // <-- PHP7+
};

var_dump(
   
$dynamic->randomInt(111),
   
$dynamic->anotherMethod()
);
?>

This will accept arrays, strings and Closures but is a bit slower due to call_user_func_array
<?php

class Dynamic extends \stdClass
{
    public function 
__call($key$params)
    {
        if ( ! isset(
$this->{$key})) {
            throw new 
Exception("Call to undefined method " __CLASS__ "::" $key "()");
        }

        return 
call_user_func_array($this->{$key}, $params);
    }
}

?>

Usage examples:
<?php
$dynamic               
= new Dynamic();
$dynamic->myMethod      "thatFunction";
$dynamic->hisMethod     = array($dynamic"randomInt");
$dynamic->newMethod     = array(SomeClass"staticMethod");
$dynamic->anotherMethod = function () {
    echo 
"Hey there";
};
$dynamic->randomInt     = function ($min$max) {
    return 
mt_rand($min$max); // random_int($min, $max); // <-- PHP7+
};

var_dump(
   
$dynamic->randomInt(111),
   
$dynamic->anotherMethod(),
   
$dynamic->hisMethod()
);

?>
2017-09-08 11:32:35
http://php5.kiev.ua/manual/ru/reserved.classes.html
There comes improved version of amazing snippet posted by (spark at limao dot com dot br)  which allows dynamic methods generations and works as versatile extension of StdClass:

This one is faster, optimised for closures, and will work only with closures. Compatible: >= PHP 5.6
<?php

class Dynamic extends \stdClass
{
    public function 
__call($key$params)
    {
        if ( ! isset(
$this->{$key})) {
            throw new 
Exception("Call to undefined method " __CLASS__ "::" $key "()");
        }

        return 
$this->{$key}->__invoke(... $params);
    }
}

?>

Usage examples:

<?php
$dynamic               
= new Dynamic();
$dynamic->anotherMethod = function () {
    echo 
"Hey there";
};
$dynamic->randomInt     = function ($min$max) {
    return 
mt_rand($min$max); // random_int($min, $max); // <-- PHP7+
};

var_dump(
   
$dynamic->randomInt(111),
   
$dynamic->anotherMethod()
);
?>

This will accept arrays, strings and Closures but is a bit slower due to call_user_func_array
<?php

class Dynamic extends \stdClass
{
    public function 
__call($key$params)
    {
        if ( ! isset(
$this->{$key})) {
            throw new 
Exception("Call to undefined method " __CLASS__ "::" $key "()");
        }

        return 
call_user_func_array($this->{$key}, $params);
    }
}

?>

Usage examples:
<?php
$dynamic               
= new Dynamic();
$dynamic->myMethod      "thatFunction";
$dynamic->hisMethod     = array($dynamic"randomInt");
$dynamic->newMethod     = array(SomeClass"staticMethod");
$dynamic->anotherMethod = function () {
    echo 
"Hey there";
};
$dynamic->randomInt     = function ($min$max) {
    return 
mt_rand($min$max); // random_int($min, $max); // <-- PHP7+
};

var_dump(
   
$dynamic->randomInt(111),
   
$dynamic->anotherMethod(),
   
$dynamic->hisMethod()
);

?>
2017-09-08 11:37:13
http://php5.kiev.ua/manual/ru/reserved.classes.html

    Поддержать сайт на родительском проекте КГБ