2009-12-18 3 views
0

В PHP 5, как я могу определить, какой класс является экземпляром объекта? Я знаю, что могу сравнить с оператором «instanceof», но, похоже, я не знаю, как действовать, когда имя класса неизвестно.Как узнать, какой класс является экземпляром объекта? (php5)

Заранее благодарен! :)

+1

У вас, вероятно, проблема с дизайном, если вам это нужно. Причина, по которой я говорю это, заключается в том, что вы, по-видимому, не можете связать множество полезных ответов. Следовательно, должен быть по крайней мере объект, тип которого вы не знаете заранее, но с которым хотите сделать что-то полезное. Но как вы можете сделать что-то полезное для объекта, тип которого вы вообще не знаете? – MSalters

+0

Возможно, у нас есть проблема с дизайном (наша кодовая база довольно старая), но я не хотел «делать» что-то «для» объекта. В нашем классе ActiveTable у нас есть метод, который всегда генерирует запись в журнале, но я хотел опустить эту запись в журнале, только если объект, унаследованный от класса, унаследованного от ActiveTable, был определенного типа :) – Danita

ответ

9

get_class (...) расскажет вам класс, объектом которого является экземпляр объекта.

http://www.php.net/manual/en/function.get-class.php

+0

добавить API Reflection в список – Gordon

+0

Как я мог пропустить это! Большое вам спасибо :-) Именно это я и имел в виду. – Danita

0

Вы имеете в виду, вы хотите, чтобы найти все объекты, которые имеют определенного класса?

Простейший способ, я могу думать, это пройти через каждую переменную, возвращаемую get_defined_vars(), и запустить instanceof на каждом из них. Тем не менее, может быть очень дорогая скорость и память.

Смежные вопросы