print_r для получения объектных методов в PHP?
-
18-09-2019 - |
Вопрос
Я работаю с Views 2 в Drupal 6, и у меня возникают трудности с поиском документации по методам объекта View.Существует ли какая-либо PHP-функция, подобная print_r, которая выводит методы, а также поля?
Решение
Я верю, что вы ищете методы получения класса.Если это так , то, получить_класс_vars это также может вас заинтересовать.
Другие советы
В API отражения может представлять для вас интерес (если это не перебор).В частности:-
<?php
Reflection::export(new ReflectionClass('View'));
?>
Ознакомьтесь с руководством для получения более подробных примеров.
Помимо функций, упомянутых Mathachew, вы также можете взглянуть на Отражение, особенно в ReflectionClass
класс.
$class = new ReflectionClass('YourViewClass');
$class->getMethods();
$class->getProperties();
Я написал эту простую функцию, которая не только отображает методы данного объекта, но также показывает его свойства, инкапсуляцию и некоторую другую полезную информацию, такую как примечания к выпуску, если они указаны.
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;
}
}
Теперь давайте создадим экземпляр Person и обернем его нашей функцией.
$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 ]
Надеюсь, вы найдете это полезным.С уважением.