Running the unit tests with php nightly exposed the bug:
Fatal error: Cannot use phpDocumentor\Reflection\Types\Void as Void
because 'Void' is a special class name in
/home/travis/build/hboomsma/ReflectionDocBlock/tests/unit/DocBlock/Tags/MethodTest.php
on line 25
Since the type resolver has support for typed arrays,
I allowed the syntax for the @method annotation.
In effect you can now annotate magic methods like:
@method Object[] myMethod($arg1, $arg2)
@method int[] myOtherMethod()
The array of tags in the docblock constructor should only contain tags.
Some of the factory methods of the tags are returning a null when the tag could not be created.
This causes issues during parsing. By filtering these null values in the factory this use is resolved.
- Changed Tag to an interface and flattened hierarchy
- Changed Description to accept a list of tags and a template
- Allow auto-wiring when constructing tags
phpDocumentor is capable of representing a whole series of types, more
than PHP supports in fact, and this commit represents those types and a
Resolver that is capable of taking a type Expression and resolving that
to a series of Value Objects representing those types.
As part of the re-architecting of phpDocumentor and its Reflection component
we needed to move the type classes from the \phpDocumentor\Descriptor
namespace to \phpDocumentor\Reflection\Types.
In addition to this I have removed the resolution / type creation from the
Collection class into a new Resolver class that is capable of resolving any
type into a Type or Fqsen object.
This is the first commit with the base classes and a test for the Resolver
functionality in subsequent commits we need to add tests for the other
classes and to refactor the collection object.