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

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

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

Эти классы определены вместе со стандартным набором функций, идущим со сборкой 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
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

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