I was trying to get a good hold on Zend Framework API but it proved quite challenging with Modules, Models, Controllers, Views, Actions, ActionHelpers, ViewHelpers, Decorators, and addon libraries like ZendX_JQuery.
That's excluding the 50+ other components !
So I thought a bit about visual (diagrammatic) API navigation.
What I mean is that you can visually browse from classA.memberM to the classB.memberN.
This would be the answer to the question:
What members of which classes will be needed to use classB.memberN, given that I have with me classA.memberM?
Another question would be not from class.member to class.member but from concept to class.member:
I want to do X activity (normal english description), so I would need class.member __?
This would probably be a single item answer, but generically a multi-step procedure. So considering a "path" through the "class-node space" so to say, makes sense.
I also noticed that you need only a simple SQL table structure to store the paths linkages to create a neat visual map.
SQL/RDBMS because a PHP-MySQL app is a useful approach for obvious reasons - more people will use it and study it and produce better ideas for visual documentation, although PHP may be a bad tool according to some.
Table "Members"(or "Nodes") : (id, memberName, className)
Table "Paths": (pathid, srcNode, destNode) /* node is class.member */
Table "Links": (linkid, fromNodeId, toNodeId, serialNumInPath)
I have seen Doxygen being used for such things but it makes diagrams of classes, IIRC.
I dont recollect having seen any web app with an interface of this type.
Just to specify, I'm guessing a UI like this:
If you want to [_________] you should use [submit] :
(A diagram with nodes that are classes and members linked in order of steps like this...)
Some_Action -> Some_View -> View_Helper -> Foo -> Bar
Any idea if such a thing exists?
Please note that this is not the full design document and so it may sound silly on first glance :-)
But I would appreciate it greatly if such website existed where I would just have to enter a keyword and get a simple path through the API.
There do exist source code analysis tools but not everyone uses them and definitely not people new to a framework.
(I'll add this for hateballs:
Lots of people don't refer to the API because it overwhelms them and I agree that they are lowly creatures who do not deserve any attention because of that. Those people would positively love this. A picture speaks a thousand words. )