PHP get_called_class

get_called_class - Ім'я класу, отримане за допомогою пізнього статичного зв'язування

Повертає ім'я класу, з якого викликано статичний метод.

Значення, що повертаються

Повертає ім'я класу. ПовертаєFALSE, якщо було викликано поза класом.

Приклад #1 Приклад використанняget_called_class()

class foo static public function test() var_dump(get_called_class()); > >

class bar extends foo >

foo::test(); bar :: test();

Результат виконання цього прикладу:

Дивіться також

  • get_parent_class() - Повертає ім'я батьківського класу для об'єкта чи класу
  • get_class() - Повертає ім'я класу, до якого належить об'єкт
  • is_subclass_of() - Перевіряє, чи містить об'єкт у своєму дереві предків зазначений клас або прямо реалізує його

User Contributed Notes 8 notes

Як PHP 5.5 ви можете також використовувати "статичний :: class" для того, щоб отримати назву з названої категорії.

class Bar public static function test () var_dump (static::class); > >

class Foo extends Bar

string(3) "Foo" string(3) "Bar"

get_called_class() in closure-scopes:

ABSTRACT CLASS Base protected static $stub = ['baz'];

//final public function boot() static public function boot() print __METHOD__ . '-> '. get_called_class(). PHP_EOL;

array_walk (static:: $stub , function() print __METHOD__ . '-> ' . get_called_class (). PHP_EOL ; >); >

public function __construct() self::boot(); print __METHOD__ . '-> '. get_called_class(). PHP_EOL;

array_walk (static: $stub , function() print __METHOD__ . '-> '. get_ called_class (). PHP_EOL ; >); > >

CLASS Sub EXTENDS Base >

// статичне завантаження Base :: boot (); надрукувати PHP_EOL ; // Base::boot -> Основа // Основа:: -> База

Sub :: boot (); надрукувати PHP_EOL ; // Base::boot -> Sub // Основа:: -> База

новий суб ; // Base::boot -> Sub // Основа:: -> Base // Base->__construct -> Sub // Base-> -> суб

// завантаження екземпляра новий суб; // Base->boot -> Sub // Base-> -> Sub // Base->__construct -> Sub // Base-> -> Sub ?>

У PHP 5.3 можна написати повністю самостійний базовий клас Singleton за допомогою get_ called_class.

абстрактний клас Singleton

захищена функція __construct () < >

кінцева публічна статична функція getInstance () < static $aoInstance = array();

if (! isset ( $aoInstance [ $ calledClassName ])) < $aoInstance [ $ calledClassName ] = новий $ calledClassName (); >

return $aoInstance [ $ calledClassName ]; >

кінцева приватна функція __clone () < > >

клас DatabaseConnection розширює Singleton

захищена функція __construct () < // @todo Підключення до бази даних >

публічна функція __destruct () < // @todo Розірвати підключення до бази даних > >

$oDbConn = нове підключення до бази даних (); // Критична помилка

$oDbConn = DatabaseConnection :: getInstance (); // Повертає один екземпляр ?>

Якщо ви викликаєте статичну функцію getInstance(), щоб створити екземпляр класу з іншого класу, ця функція має бути статичною, якщо вона не є статичною, оригінальне ім’я класу, що викликає, а не поточне ім’я.class get returned.

class a function getXName() return x::getClassName(); > function getXStaticName() return x::getStaticClassName(); >

class b extends a >

class x public function getClassName() return get_called_class(); > public static function getStaticClassName() return get_called_class(); > >

echo $a -> getXName(); // will return "a" echo $b -> getXName(); // will return "b"

echo $a -> getXStaticName(); // will return "x" echo $b -> getXStaticName(); // will return "x"