Часто бывает полезно узнать свойства (и их значения), а так же методы которые содержит нужный класс или объект. Есть 2 варианта это сделать программно с выводом на экран, используя:
  1. Обычные функции PHP;
  2. Reflection API

Используем обычные функции PHP.

Например можно просмотреть значения всех свойств объекта на текущий момент или проверить содержит ли данный класс определенный метод... Для этого PHP содержит вспомогательные функции:
  • get_object_vars( $obj ) - возвращает ассоциативный массив всех свойств объекта $obj, вместе с их текущими значениями;
  • get_class_vars( $className ) - возвращает ассоциативный массив всех полей класса $className вместе с их значениями по умолчанию;
  • get_class_methods($className или $obj ) - возвращает массив названий всех методов класса.

Я, для себя, написал функцию, которая выводит публичные свойства и методы на экран в удобном виде. В качестве параметра $ess, она принимает объект или класс, который нас интересует:
function InfoEssence($ess) {
    //Передан объект
    if(is_object($ess)){
        $class = get_class($ess); //класс объекта
        $obj = $ess;
        $vars_obj = '<pre>' . print_r(get_object_vars($obj), true) . '</pre>';
    //Передан класс
    } else {
        $class = $ess;
        $vars_obj = null;
    }  
  
    $vars_class = '<pre>' . print_r(get_class_vars($class), true) . '</pre>';    
    $methods = '<pre>' . print_r(get_class_methods($class), true) . '</pre>';

    if ($vars_obj) echo 'Свойства объекта- экземпляра класса '.$class.':'.$vars_obj;
    echo 'Свойства класса '.$class.':'.$vars_class.
         'Методы класса '.$class.':'.$methods;
}

Проверим ее на примере простого класса MyClass и его экземпляра (объекта) $objMyClass:
class MyClass{
    static public $name = "Serj";
    public $age = 21;
    function getAge() {}
    function setAge() {}
}

$objMyClass = new MyClass();
$objMyClass->age = 30;

Если у вас есть экземпляр класса (объект), то проще всего именно его и передать в функцию. Так дополнительно получим информацию по его свойствам.

Попробуем получить информацию в контексте объекта:
InfoEssence($objMyClass); //информация по объекту
    
Результат:
Свойства объекта- экземпляра класса MyClass:
Array
(
    [age] => 30
)
Свойства класса MyClass:
Array
(
    [age] => 21
    [name] => Serj
)
Методы класса MyClass:
Array
(
    [0] => getAge
    [1] => setAge
)

Если объект не создавался или же нет к нему доступа - получаем информацию в контексте класса, для чего передаем его название:
InfoEssence('MyClass'); //информация по классу
// или InfoEssence(MyClass::class);
Результат:
Свойства класса MyClass:
Array
(
    [age] => 21
    [name] => Serj
)
Методы класса MyClass:
Array
(
    [0] => getAge
    [1] => setAge
)

Эту функцию можно так же использовать для получения информации изнутри любого другого класса.
Для этого:
1. функцию InfoEssence() сделать методом данного класса (разместить ее среди других методов);

2. для запуска - добавить в любой исполняемый метод:
- если интересует текущий класс(объект)
$this->InfoEssence(self::class); //класс
$this->InfoEssence($this); //объект

- если интересует другой класс(объект), например «Post»
$this->InfoEssence(\common\models\Post::class); //класс
$this->InfoEssence($obj); //$obj- содержит интересующий объект




Reflection API.

С помощью классов, которые содержит Reflection API, можно сделать очень многое, не только вывести на экран информацию про свойства и методы класса/объекта. Не требует установки т.к. является частью ядра PHP. Включен с 5-й версии.

ReflectionСодержит статический метод export(), предоставляющий итоговую информацию о классе
ReflectionClassПозволяет получить информацию о классе и содержит средства для работы с ним
ReflectionMethodПозволяет получить информацию о методах класса и содержит средства для работы с ними
ReflectionParameterПозволяет получить информацию об аргументах метода
ReflectionPropertyПозволяет получить информацию о свойствах класса
ReflectionFunctionПозволяет получить информацию о функциях и содержит средства для работы с ними
ReflectionExtensionПозволяет получить информацию о расширениях PHP
ReflectionExceptionПредназначен для обработки ошибок
Советую изучить все возможности самостоятельно тут.

Остановимся только на некоторых моментах. У ReflectionClass есть статичный метод export(), который выводит на экран много полезной информации по переданному ему классу. Немного похоже на то, что делает вышеописанная функция, но выводит не только публичные, а все свойства и методы!

Выведем информацию по вышеописанному классу:
echo '<pre>';
ReflectionClass::export('MyClass');
echo '</pre>';
в качестве параметра, методу export() передаем название класса или переменную содержащую нужный объект.

Получим:
Class [ <user> class MyClass ] {
  @@ W:\domains\test.loc\index.php 14-19

  - Constants [0] {
  }

  - Static properties [1] {
    Property [ public static $name ]
  }

  - Static methods [0] {
  }

  - Properties [1] {
    Property [ <default> public $age ]
  }

  - Methods [2] {
    Method [ <user> public method getAge ] {
      @@ W:\domains\test.loc\index.php 17 - 17
    }

    Method [ <user> public method setAge ] {
      @@ W:\domains\test.loc\index.php 18 - 18
    }
  }
}</user></user></default></user>
так же получим информацию про файл в котором находится данный класс и строки на которых он расположен. Чего не хватает по сравнению с функцией описанной выше так это вывода значений свойств класса. Но их можно получить отдельно - читайте документацию.

Отмечу еще, что иногда проще взглянуть на сам класс в файле, а не выводить по нему информацию. Правда не всегда понятно, в каком именно файле его искать. Вывести только название и путь к файлу в котором объявлен класс можно так:
$rc = new ReflectionClass ('MyClass'); //или $obj
echo $rc->getFileName(); //W:\domains\test.loc\index.php