PHP - выводит все свойства объекта
У меня есть неизвестный объект на странице php.
Как я могу распечатать/воспроизвести его, чтобы я мог видеть, какие свойства/значения у него есть?
Как насчет функций? Есть ли какой-нибудь способ узнать, какими функциями обладает объект?
7 answers
<?php var_dump(obj) ?>
Или
<?php print_r(obj) ?>
Это те же самые вещи, которые вы используете и для массивов.
Они будут отображать защищенные и частные свойства объектов с PHP 5. Статические члены класса не будут отображаться в соответствии с руководством.
Если вы хотите знать методы членов, вы можете использовать get_class_methods():
$class_methods = get_class_methods('myclass');
// or
$class_methods = get_class_methods(new myclass());
foreach ($class_methods as $method_name)
{
echo "$method_name<br/>";
}
Связанные материалы:
Поскольку никто еще не предоставил подход OO, здесь все так, как было бы сделано.
class Person {
public $name = 'Alex Super Tramp';
public $age = 100;
private $property = 'property';
}
$r = new ReflectionClass(new Person);
print_r($r->getProperties());
//Outputs
Array
(
[0] => ReflectionProperty Object
(
[name] => name
[class] => Person
)
[1] => ReflectionProperty Object
(
[name] => age
[class] => Person
)
[2] => ReflectionProperty Object
(
[name] => property
[class] => Person
)
)
Преимущество при использовании отражения заключается в том, что вы можете фильтровать по видимости свойства, например:
print_r($r->getProperties(ReflectionProperty::IS_PRIVATE));
Поскольку Person::$property является частным, он возвращается при фильтрации по IS_PRIVATE:
//Outputs
Array
(
[0] => ReflectionProperty Object
(
[name] => property
[class] => Person
)
)
Прочитайте документы!
var_dump($obj);
Если вам нужна дополнительная информация, вы можете использовать класс отражения:
Мне очень нравится DBUG. Я обычно использую var_dump()
для скаляров (int, строка, логическое значение и т.д.) и dBug для массивов и объектов.
Скриншот объекта с официального сайта:
Для получения дополнительной информации используйте эту пользовательскую функцию ($SomeObject):
Я написал эту простую функцию, которая не только отображает методы данного объекта, но также показывает его свойства, инкапсуляцию и некоторую другую полезную информацию, такую как примечания к выпуску, если таковые имеются.
function TO($object){ //Test Object
if(!is_object($object)){
throw new Exception("This is not a Object");
return;
}
if(class_exists(get_class($object), true)) echo "<pre>CLASS NAME = ".get_class($object);
$reflection = new ReflectionClass(get_class($object));
echo "<br />";
echo $reflection->getDocComment();
echo "<br />";
$metody = $reflection->getMethods();
foreach($metody as $key => $value){
echo "<br />". $value;
}
echo "<br />";
$vars = $reflection->getProperties();
foreach($vars as $key => $value){
echo "<br />". $value;
}
echo "</pre>";
}
Чтобы показать вам, как это работает, я сейчас создам какой-нибудь случайный пример класса. Давайте создадим класс с именем Person и разместим некоторые примечания к выпуску прямо над объявлением класса:
/**
* DocNotes - This is description of this class if given else it will display false
*/
class Person{
private $name;
private $dob;
private $height;
private $weight;
private static $num;
function __construct($dbo, $height, $weight, $name) {
$this->dob = $dbo;
$this->height = (integer)$height;
$this->weight = (integer)$weight;
$this->name = $name;
self::$num++;
}
public function eat($var="", $sar=""){
echo $var;
}
public function potrzeba($var =""){
return $var;
}
}
Теперь давайте создайте экземпляр человека и оберните его нашей функцией.
$Wictor = new Person("27.04.1987", 170, 70, "Wictor");
TO($Wictor);
Это выведет информацию об имени класса, параметрах и методах, включая информацию об инкапсуляции и количестве параметров, именах параметров для каждого метода, местоположении метода и строках кода, где он существует. Смотрите вывод ниже:
CLASS NAME = Person
/**
* DocNotes - This is description of this class if given else it will display false
*/
Method [ public method __construct ] {
@@ C:\xampp\htdocs\www\kurs_php_zaawansowany\index.php 75 - 82
- Parameters [4] {
Parameter #0 [ $dbo ]
Parameter #1 [ $height ]
Parameter #2 [ $weight ]
Parameter #3 [ $name ]
}
}
Method [ public method eat ] {
@@ C:\xampp\htdocs\www\kurs_php_zaawansowany\index.php 83 - 85
- Parameters [2] {
Parameter #0 [ $var = '' ]
Parameter #1 [ $sar = '' ]
}
}
Method [ public method potrzeba ] {
@@ C:\xampp\htdocs\www\kurs_php_zaawansowany\index.php 86 - 88
- Parameters [1] {
Parameter #0 [ $var = '' ]
}
}
Property [ private $name ]
Property [ private $dob ]
Property [ private $height ]
Property [ private $weight ]
Property [ private static $num ]
Надеюсь, вы найдете это полезным. С уважением.
Попробуйте использовать Симпатичный дамп он отлично подходит для меня
Для знания свойств объекта лучше всего использовать var_dump(объект). Он покажет все публичные, частные и защищенные свойства, связанные с ним, не зная имени класса.
Но в случае методов вам нужно знать имя класса, иначе, я думаю, трудно получить все связанные методы объекта.