Pull to refresh

Comments 36

спасибо, очень интересно.
только вот не понял, почему в див «doc» ничего не подгружается?

делал нечто подобное для бэкенда своей системы на codeigniter + jquery (управления контроллерами, моделями и представлениями).
Там должно дерево отрисовываться как на скриншоте. Какой у вас браузер?
дерево отрисовалось, проверял в ff 3.0.11 и ie8 :)
ради интереса даже в фаирбаге глянул — при выборе элемента из дерева идет пост запрос на phpreflector.elifantiev.ru/reflector.php, а в ответ ничего не приходит…
Пардон, перепутал.
Там задумана отрисовка докблоков, но на текущем хостинге она почему-то не работает, ReflectionClass::getDocComment возвращает false =(

На моей машине с PHP5.2.4 работает, а на хостинге с 5.2.9 — нет. Исследую почему так…
Для выглядящих таким образов блоков у меня отображается нормально.
...
/**
* @category ZFDebug
* @package ZFDebug_Controller
* @subpackage Plugins
* @copyright Copyright © 2008-2009 ZF Debug Bar Team (zfdebug.googlecode.com)
* @license code.google.com/p/zfdebug/wiki/License New BSD License
*/
class ZFDebug_Controller_Plugin_Debug_Plugin_Reflection extends Zend_Controller_Plugin_Abstract implements ZFDebug_Controller_Plugin_Debug_Plugin_Interface
...
у меня тоже в «док» пусто. Firefox 3 0 11 в Хроме тоже пусто, только при.
*только при клике на BaseClass что то написало, но сейчас уже не пишет…
Оказалось, причина в установленном на хостинге eAccelerator. После его отключения все встало на свои места.
Строкой выше ответил почему так.
следующий шаг — онлайн редактор для php! :)
У нас есть некоторые наработки по этому вопросу. Единственное с чем пока столкнулись инденты по Tab и «умный» фолдинг.
Latency будет гигантским(если например будет включен хотя бы highlight + autocomplete) даже для человека, который пользуется ide. А уж для юзеров vim, которые вообще командами «пишут»…

Вся надежда только на технологии, которые встраиваются на клиенте(beyond active x), то тогда нафига нам браузер :-)
Выложил. См. выше. + на самой демо-странице ссылка.
Нет. get_declared_classes() показывает объявленные в данный момент классы. Все равно надо пробегаться по исходникам как минимум подгружать все найденное.

Эта функция, естественно, не знает о классах написанных но не загруженных.
Лично мне больше подходит вариант с просмотром только декларированных классов.
Теряется суть. Задумывалось как отдельный скрипт который можно загрузить в абсолютно неизвестный проект и с помощью него посмотреть имеющиеся классы, их структуру и иерархию.
Да, планирую уменьшить Ext, спасибо
А думали над областью приминения?
Изучение структуры классов проекта например. При решенной проблеме докблоков это практичечски получается phpDocumentor lite =)

Плюс в том что данные обновляются на ходу, по мере обновления классов. Не надо перегенерировать ничего. Разве только классы переиндексировать иногда.

Когда я изучал .NET и SharePoint мне аналогичная утилита очень помогла (Red Gate's .NET Reflector) в изучении внутренних механизмов классов SharePoint
Напиши тогда how to как его прицепить к тому же PHPShop…
PHPShop (PHPShop CMS 2.2.2.2 Free version) настолько убог (помимо FCKEditor и Dumper там целых 3 своих класса) и крив в плане ООП (классы там используются для хранения функций) что это не тот продукт на котором надо демонстрировать Reflector.

Предложите другой достойный бесплатный незаобфускейченный ООП-проект — сделаю HowTo.
Ну и еще демонстрация возможностей Reflection API и Tokenizer
В исходниках отсутствует Ext (для уменьшения объема).


нужны ли какие-то дополнительные компоненты или хватит Ext Core?
в екст коре нет визуальных компонент вроде дерева. надо именно Extjs
Что-то уж очень понравилась идея с Reflection и мониторингом за загруженными классами и т. п. в общем написал плагин к ZFDebug:
ZFDebug Reflection Plugin
Еще скриншотов можно посмотреть тут: ZFDebug Reflection Plugin.

Сейчас плагин показывает все загруженные расширения php, их директивы из php.ini, константы функции и классы в виде дерева (jQuery), для функций и классов так же используется Reflection; Так же отображаются все объявленные интерфейсы объектов, классы и функции ( пользовательские отображены отдельно ). Если любителея ZF и ZFDebug будет интересно — то прикручу еще кеширование и выложу в виде релиза.
На текущее состояние не вижу практического применения
Еще можно было тип возращаемого значения вывести если мне память не изменяет то примерно так
$func = new ReflectionMethod(«MyClass», «somemethod»);
gettype($func->invoke());
А с аргументами как быть?
сам не пробовал но мануал говорит
public ReflectionParameter[] getParameters()
Как получить количество параметров и их дефолтные значения я знаю. Как вызвать функцию не передав ей ни одного параметра? Какие параметры передать чтобы функция вернула результат в не допустим null или не кинула Exception?
Да это все ясно
Но сама функция для меня черный ящик, известно лишь имя и количество аргументов.

Вызов функции без какого либо окружения и с непонятно какими аргументами (их значениями) не дает никаких гарантий получения в ответ результата нужного типа.

А раз нет гарантии получить достоверный результат не стоит и пользоваться такой придротной схемой определения возвращаемого значения.
getParameters() не прокатывает там где используется func_get_arg() и т. п.
В коде опечатка:
для индексации нужно вызвать reflector.php?indexClasses
Sign up to leave a comment.

Articles