dev-develop
dev-develop http://www.berlioz-framework.comBerlioz PhpDoc
MIT
The Requires
- php >=7.1
- psr/simple-cache 1.0.1
- psr/log 1.0.2
The Development Requires
by Ronan Giron
Wallogit.com
2017 © Pedro Peláez
Berlioz PhpDoc
Berlioz PhpDoc is a PHP library to read the documentations in code (classes, methods and functions) with advanced annotation interpretation., (*2)
You can install Berlioz PhpDoc with Composer, it's the recommended installation., (*3)
$ composer require berlioz/php-doc
$phpDocFactory = new PhpDocFactory;
// To get class PhpDoc
$doc = $phpDocFactory->getClassDoc(ClassOfMyProject::class);
// To get class property PhpDoc
$doc = $phpDocFactory->getPropertyDoc(ClassOfMyProject::class, 'myProperty');
// To get class method PhpDoc
$doc = $phpDocFactory->getMethodDoc(ClassOfMyProject::class, 'myMethod');
// To get function PhpDoc
$doc = $phpDocFactory->getFunctionDoc('myFunction');
The library supports PSR-16 (Common Interface for Caching Libraries)., (*4)
To use it, you need to pass the cache manager in first argument of PhpDocFactory class., (*5)
$simpleCacheManager = new MySimpleCacheManager; $phpDocFactory = new PhpDocFactory($simpleCacheManager);
So you do disk i/o economies and your application will be faster than if you don't use cache manager., (*6)
A DocBlock class or an array of them are returned when you call these methods of factory:
- PhpDocFactory::getClassDocs() returns an array of Berlioz\PhpDoc\DocBlock
- PhpDocFactory::getClassDoc() returns a Berlioz\PhpDoc\DocBlock\ClassDocBlock object
- PhpDocFactory::getPropertyDoc() returns a Berlioz\PhpDoc\DocBlock\PropertyDocBlock object
- PhpDocFactory::getMethodDoc() returns a Berlioz\PhpDoc\DocBlock\MethodDocBlock object
- PhpDocFactory::getFunctionDoc() returns a Berlioz\PhpDoc\DocBlock\FunctionDocBlock object, (*7)
Some methods are available with DocBlock object:
- DocBlock::getTitle() returns the title part in the PhpDoc
- DocBlock::getDescription() returns the description part in the PhpDoc
- DocBlock::getTags() returns all tags presents in the PhpDoc
- DocBlock::getTag() returns a tag present in the PhpDoc
- DocBlock::hasTag() returns if a tag is present in the PhpDoc, (*8)
Additional methods are available with extended DocBlockclass:
- Berlioz\PhpDoc\DocBlock\FunctionDocBlock:
- FunctionDocBlock::getName(): returns the full name of function
- FunctionDocBlock::getShortName(): returns the short name of function
- FunctionDocBlock::getNamespaceName(): returns the namespace name of function
- FunctionDocBlock::getClassName(): returns the name of class
- FunctionDocBlock::isDisabled(): known if function is disabled
- FunctionDocBlock::isUserDefined(): known if it's user defined function
- FunctionDocBlock::isInternal(): known if function is internal
- FunctionDocBlock::isClosure(): known if function is a closure
- FunctionDocBlock::isDeprecated(): known if function is deprecated
- FunctionDocBlock::isGenerator(): known if function is generator
- FunctionDocBlock::isVariatic(): known if function is variatic
- Berlioz\PhpDoc\DocBlock\ClassDocBlock:
- ClassDocBlock::getName(): returns the full name of class
- ClassDocBlock::getShortName(): returns the short name of class
- ClassDocBlock::getNamespaceName(): returns the namespace name of class
- ClassDocBlock::isAbstract(): known if class is abstract
- ClassDocBlock::isFinal(): known if class is final
- ClassDocBlock::isInternal(): known if class is internal
- ClassDocBlock::isUserDefined(): known if it's user defined class
- ClassDocBlock::isAnonymous(): known if class is anonymous
- ClassDocBlock::isCloneable(): known if class is cloneable
- ClassDocBlock::isInstantiable(): known if class is instantiable
- ClassDocBlock::isInterface(): known if class is an interface
- ClassDocBlock::isIterable(): known if class is iterable
- ClassDocBlock::isIterateable(): known if class is iterateable
- ClassDocBlock::isTrait(): known if class is a trait
- Berlioz\PhpDoc\DocBlock\PropertyDocBlock:
- PropertyDocBlock::getName(): returns the full name of property
- PropertyDocBlock::getShortName(): returns the short name of property
- PropertyDocBlock::getNamespaceName(): returns the namespace name of class
- PropertyDocBlock::getClassName(): returns the name of class
- PropertyDocBlock::isPublic(): known if property has public visibility
- PropertyDocBlock::isProtected(): known if property has protected visibility
- PropertyDocBlock::isPrivate(): known if property has private visibility
- PropertyDocBlock::isStatic(): known if property is static
- PropertyDocBlock::isDefault(): known if property is default
- Berlioz\PhpDoc\DocBlock\MethodDocBlock:
- MethodDocBlock::getName(): returns the full name of method
- MethodDocBlock::getShortName(): returns the short name of method
- MethodDocBlock::getNamespaceName(): returns the namespace name of class
- MethodDocBlock::getClassName(): returns the name of class
- MethodDocBlock::isConstructor(): known if method is constructor
- MethodDocBlock::isDestructor(): known if method is destructor
- MethodDocBlock::isPublic(): known if method has public visibility
- MethodDocBlock::isProtected(): known if method has protected visibility
- MethodDocBlock::isPrivate(): known if method has private visibility
- MethodDocBlock::isStatic(): known if method is static
- MethodDocBlock::isAbstract(): known if method is abstract
- MethodDocBlock::isFinal(): known if method is final
- MethodDocBlock::isUserDefined(): known if it's user defined method
- MethodDocBlock::isInternal(): known if method is internal
- MethodDocBlock::isClosure(): known if method is a closure
- MethodDocBlock::isDeprecated(): known if method is deprecated
- MethodDocBlock::isGenerator(): known if method is generator
- MethodDocBlock::isVariatic(): known if method is variatic, (*9)
Some tags formats are supported by library and the value returned by DocBlock class is a PHP code and not string., (*10)
Example:, (*11)
/**
* Test doc.
*
* My description of my method.
* Multi-line.
*
* @test false
* @novalue
* @value Only text
* @test2("test", param1=true, param2="test", param3={"test":"test"})
* @value Second text
* @jsonTest {"test":"test"}
* @jsonArrayTest [{"test":"test"}, {"test2":"test2"}]
*/
The result of DocBlock::getTags() method is:, (*12)
array(6) {
["test"]=>
array(1) {
[0]=>
object(Berlioz\PhpDoc\Tag) (2) {
["name":"Berlioz\PhpDoc\Tag":private]=>
string(4) "test"
["value":"Berlioz\PhpDoc\Tag":private]=>
bool(false)
}
}
["novalue"]=>
array(1) {
[0]=>
object(Berlioz\PhpDoc\Tag) (2) {
["name":"Berlioz\PhpDoc\Tag":private]=>
string(7) "novalue"
["value":"Berlioz\PhpDoc\Tag":private]=>
NULL
}
}
["value"]=>
array(2) {
[0]=>
object(Berlioz\PhpDoc\Tag) (2) {
["name":"Berlioz\PhpDoc\Tag":private]=>
string(5) "value"
["value":"Berlioz\PhpDoc\Tag":private]=>
string(9) "Only text"
}
[1]=>
object(Berlioz\PhpDoc\Tag) (2) {
["name":"Berlioz\PhpDoc\Tag":private]=>
string(5) "value"
["value":"Berlioz\PhpDoc\Tag":private]=>
string(11) "Second text"
}
}
["test2"]=>
array(1) {
[0]=>
object(Berlioz\PhpDoc\Tag) (2) {
["name":"Berlioz\PhpDoc\Tag":private]=>
string(5) "test2"
["value":"Berlioz\PhpDoc\Tag":private]=>
array(4) {
[0]=>
string(4) "test"
["param1"]=>
bool(true)
["param2"]=>
string(4) "test"
["param3"]=>
object(stdClass) (1) {
["test"]=>
string(4) "test"
}
}
}
}
["jsonTest"]=>
array(1) {
[0]=>
object(Berlioz\PhpDoc\Tag) (2) {
["name":"Berlioz\PhpDoc\Tag":private]=>
string(8) "jsonTest"
["value":"Berlioz\PhpDoc\Tag":private]=>
object(stdClass) (1) {
["test"]=>
string(4) "test"
}
}
}
["jsonArrayTest"]=>
array(1) {
[0]=>
object(Berlioz\PhpDoc\Tag) (2) {
["name":"Berlioz\PhpDoc\Tag":private]=>
string(13) "jsonArrayTest"
["value":"Berlioz\PhpDoc\Tag":private]=>
array(2) {
[0]=>
object(stdClass) (1) {
["test"]=>
string(4) "test"
}
[1]=>
object(stdClass) (1) {
["test2"]=>
string(5) "test2"
}
}
}
}
}
Some tags are available by default:
- Berlioz\PhpDoc\Tag\ParamTag
- Berlioz\PhpDoc\Tag\ReturnTag
- Berlioz\PhpDoc\Tag\VarTag, (*13)
You can extends tags and declare them to the parser. Yours tags must implements TagInterface interface., (*14)
$phpDocFactory = new PhpDocFactory;
$phpDocFactory->getParser()->addTagClass('tagName', MyTagClass::class);
Berlioz PhpDoc
MIT