PHP get_ called_class

get_ called_class — Име на клас, получено с помощта на късно статично свързване

Връща името на класа, от който е извикан статичният метод.

Върнати стойности

Връща името на класа. ВръщаFALSE, ако се извика извън класа.

Пример #1 Пример за използванеget_ called_class()

class foo статична публична функция test() var_dump(get_ called_class()); > >

лентата на класа разширява foo >

foo::test(); лента::тест();

Резултатът от изпълнението на този пример:

Вижте също

  • get_parent_class() – Връща името на родителския клас на обект или клас
  • get_class() - Връща името на класа, към който принадлежи обектът
  • is_subclass_of() - Проверява дали даден обект съдържа посочения клас в дървото на предците си или директно го имплементира

Допринесени от потребителя бележки 8 бележки

От PHP 5.5 можете също да използвате "static::class", за да получите името на извикания клас.

class Bar публична статична функция test() var_dump(static::class); > >

клас Foo разширява Bar

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

get_ called_class() в обхвати на затваряне:

АБСТРАКТЕН КЛАС Base protected static $stub = [ 'baz' ];

//окончателна публична функция boot() статична публична функция boot() печат __METHOD__. '-> ' . get_ called_class(). PHP_EOL ;

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

публична функция __construct() self::boot(); отпечатайте __METHOD__. '-> ' . get_ called_class(). PHP_EOL ;

array_walk(статичен::$stub, функция() отпечатайте __METHOD__. '-> ' . get_ called_class (). PHP_EOL ; >); > >

КЛАС Sub EXTENDS Base >

// статично зареждане База :: зареждане (); печат 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-> -> Под ?>

Възможно е да се напише напълно самостоятелен базов клас Singleton в PHP 5.3 с помощта на get_ called_class.

абстрактен клас Singleton

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

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

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

връща $aoInstance [ $ calledClassName ]; >

крайна частна функция __clone () < > >

клас DatabaseConnection разширява Singleton

защитена функция __construct () < // @todo Свързване към базата данни >

публична функция __destruct () < // @todo Прекъснете връзката към базата данни > >

$oDbConn = нова DatabaseConnection (); // Фатална грешка

$oDbConn = DatabaseConnection :: getInstance (); // Връща единичен екземпляр ?>

Ако извикате статична функция getInstance(), за да създадете екземпляр на клас от друг клас, тази функция трябва да е статична, ако не е статична, оригиналното име на извикващия клас, а не на текущияклас се връща.

клас a функция getXName() return x::getClassName(); > функция getXStaticName() връща x :: getStaticClassName(); >

клас b разширява a >

клас x публична функция getClassName() връща get_ called_class(); > публична статична функция getStaticClassName() връща get_ called_class(); > >

ехо $a -> getXName(); // ще върне "a" echo $b -> getXName(); // ще върне "b"

ехо $a -> getXStaticName(); // ще върне "x" echo $b -> getXStaticName(); // ще върне "x"