js получить название класса
Чтобы получить название класса в JavaScript, нужно использовать свойство className элемента или метод classList для доступа к списку классов элемента.
- Используя свойство className :
class="my-class">Чтобы получить название класса в JavaScript, нужно использовать свойство className элемента или метод classList для доступа к списку классов элемента.
class="my-class">const element = document.querySelector('.my-class'); const className = element.className; console.log(className); // выведет "my-class"
class="my-class">const element = document.querySelector('.my-class'); const classList = element.classList; console.log(classList); // выведет объект DOMTokenList console.log(classList[0]); // выведет первый класс элемента, т.е. "my-class"
Важно учитывать, что если элемент имеет несколько классов, то возвращаемое свойством className значение будет строкой, содержащей все классы через пробел. Если же нужно работать с каждым классом отдельно, то лучше использовать метод classList , который возвращает объект DOMTokenList , содержащий все классы элемента в виде отдельных строк.
class="foo bar">const element = document.querySelector('div'); const classList = element.classList; console.log(classList); // выведет DOMTokenList ["foo", "bar"]
class="foo bar">const element = document.querySelector('div'); const firstClass = element.classList[0]; console.log(firstClass); // выведет "foo"
Возвращает имя класса, из которого был вызван статический метод.
У этой функции нет параметров.
Возвращает имя класса.
Если функция get_called_class() вызывается не из класса, то выдаётся ошибка Error . До версии PHP 8.0.0 выдавалась ошибка уровня E_WARNING .
| Версия | Описание |
|---|---|
| 8.0.0 | Вызов функции не из класса теперь приводит к ошибке Error . Ранее выдавалась ошибка уровня E_WARNING и функция возвращала значение false . |
Пример #1 Пример использования get_called_class()
class foo static public function test () var_dump ( get_called_class ());
>
>
class bar extends foo >
foo :: test ();
bar :: test ();
Результат выполнения приведённого примера:
string(3) "foo" string(3) "bar"
9 years ago
As of PHP 5.5 you can also use «static::class» to get the name of the called class.
class Bar public static function test () var_dump (static::class);
>
>
class Foo extends Bar
string(3) «Foo»
string(3) «Bar»
10 years ago
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
>
// static boot
Base :: boot (); print PHP_EOL ;
// Base::boot -> Base
// Base:: -> Base
Sub :: boot (); print PHP_EOL ;
// Base::boot -> Sub
// Base:: -> Base
new sub ;
// Base::boot -> Sub
// Base:: -> Base
// Base->__construct -> Sub
// Base-> -> Sub
// instance boot
new sub ;
// Base->boot -> Sub
// Base-> -> Sub
// Base->__construct -> Sub
// Base-> -> Sub
?>
12 years ago
I think it is worth mentioning on this page, that many uses of the value returned by get_called_function() could be handled with the new use of the old keyword static, as in
static:: $foo ;
?>
versus
$that = get_called_class ();
$that :: $foo ;
?>
I had been using $that:: as my conventional replacement for self:: until my googling landed me the url above. I have replaced all uses of $that with static with success both as
static:: $foo ; //and.
new static();
?>
Since static:: is listed with the limitation: «Another difference is that static:: can only refer to static properties.» one may still need to use a $that:: to call static functions; though I have not yet needed this semantic.
3 years ago
namespace root;
class Factor protected static $instance = null;
private function __construct()
public static function getInstance() if (!self::$instance) $name = get_called_class();
self::$instance = new $name();
>
class Single extends Factor public function abc() return ‘abc’;
>
>
class Index public function get() return Single::getInstance();
>
>
$index = new Index();
var_dump($index->get());
У меня есть функция (используется для записи логов), которая вызывается в разных классах. Не хочется каждый раз переписывать код в ней для каждого нового класса(они будут и добавляться и убираться со временем, ну или вообще функция будет использоваться в дальнейшем в других проектах). Мне хотелось бы узнавать имя класса, из которого она вызывается (для задания имени файлу и прочих плюшек) не передавая лишних параметров в функцию. Это можно реализовать? Можно и boost`ом.
Отслеживать
задан 22 апр 2016 в 10:51
761 1 1 золотой знак 7 7 серебряных знаков 19 19 бронзовых знаков
это похоже на то, что Вы хотите stackoverflow.com/questions/1666802/is-there-a-class-macro-in-c
22 апр 2016 в 11:12
Если вам дан исчерпывающий ответ, отметьте его как верный (галка напротив выбранного ответа).
23 апр 2016 в 13:16
Сортировка: Сброс на вариант по умолчанию
Функция typeid(object) возвращает объект типа type_info с информацией о типе объекта, для которого она вызывается (собственно, о классе). У этого объекта( type_info ) есть метод name() , который и возвращает имя класса. Для использования нужно подключить .
Так что в итоге для получения имени класса нужно использовать
Или, если функция не является методом класса, передать в typeid сам объект или разыменованный указатель.
Отслеживать
ответ дан 22 апр 2016 в 13:53
36 1 1 бронзовый знак
Никто не гарантирует, что name() вернёт «человеческое» имя. Как показывает практика, в некоторых компиляторах, эти имена ничего не могут сказать человеку.
23 апр 2016 в 9:26
Собственные средства c++ не позволяют ничего узнать о контектсте вызова функции.
Стек вызова можно проанализировать с помощью некоторых внешних библиотек / API операционной системы. Например: http://man7.org/linux/man-pages/man3/backtrace.3.html https://msdn.microsoft.com/en-us/library/ms680650%28VS.85%29.aspx . Но для применение этих средств может налагать дополнительные ограничения на собираемый код (сборка с отладочной информацией и т.д.).
Более разумно, ИМХО, передавать контекст вызова явно: это позволит использовать «штатные» средства c++: __FILE__ , __LINE__ , __func__ , . Извлечение контекста можно замаскировать макросом:
struct Context< const char* file; unsigned line; const char* function; >; // Work around MSVS #ifndef __func__ #define __func__ __FUNCTION__ #endif #define CONTEXT() Context(< __FILE__, __LINE__, __func__>) void foo( int a, int b, Context c ); #define FOO(a, b) foo( a, b, CONTEXT() )
Имя класса можно извлечь либо разобрав имя __FUNCTION__ , либо из указателя this :
typeid(this).name()
Но не хочется включать этот обращение к this в макрос, поскольку функции может быть вызвана из контекста, статической функции.
С другой стороны для целей разделения логов может быть достаточно __FILE__ .
Как можно получить и вывести на экран список всех методов класса, представителем которого является объект?
Имеется объект ($obj) какого-то класса. Требуется получить и вывести на экран имя класса, экземпляром которого является этот объект.
Имеется объект ($obj) какого-то класса. Требуется получить список всех методов класса, которому принадлежит объект.
Имеется объект ($obj) какого-то класса. Требуется получить список всех свойств класса, которому принадлежит объект.
Как можно узнать метод, который был использован при отправке запроса?
Как можно узнать виртуальный путь до выполняющегося в данный момент скрипта?
Функция domxml_open_file в качестве результата возвращает объект класса DOMDocument . Что передается этой функции в качестве параметра?
Функция domxml_open_mem в качестве результата возвращает объект класса DOMDocument . Что передается этой функции в качестве параметра?
Создать класс описаний экспонатов виртуального музея, задать начальные значения свойств класса, описать метод для отображения объектов класса. Создать экземпляр класса, получить значения его свойств и вызвать метод.
Создать класс описаний экспонатов виртуального музея, задать начальные значения свойств класса и описать метод для отображения объектов класса.