Download the PHP package minime/annotations without Composer
On this page you can find all versions of the php package minime/annotations. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download minime/annotations
More information about minime/annotations
Files in minime/annotations
Informations about the package annotations
Minime \ Annotations
Minime\Annotations is the first KISS PHP annotations library.
Composer Installation
Through terminal: composer require minime/annotations:~3.0
:8ball:
Setup
First grab an instance of the Minime\Annotations\Reader
the lazy way:
Or instantiate the annotations reader yourself with:
Notice that Reader::createFromDefaults()
creates a reader instance with array cache enabled.
On production you might want to use a persistent cache handler like FileCache
instead:
Reading Annotations
Consider the following class with some docblock annotations:
Let's use the Minime\Annotations\Reader
instance to read annotations from classes,
properties and methods. Like so:
The same applies to class properties...
methods...
and functions || closures:
Managing Annotations
The annotations reader Reader::get(*)Annotations
always returns AnnotationsBag
instances so you can easily manage annotations:
Namespacing
It's a good idea to namespace custom annotations that belong to a package.
Later you can retrieve all those namespaced annotations using the AnnotationsBag
api:
Piping Filters
You can also easily "pipe" filters. This time let's "grep" all annotations beginning with "x" and within "response" namespace:
Traversing results
As you might expect, AnnotationsBag
is traversable too:
Union
You can also perform union operations between two annotations sets:
Please refer to annotations bag public API for more operations.
The Default Syntax
Which basically means that:
@
line must start with a docblock annotation tag- must have an annotation identifier
- annotation identifier can have namespace with segments delimited by
.
or\
- annotation identifier can have namespace with segments delimited by
- whitespace
- can have an annotation value
- value can have an optional type [
json
,string
,integer
,float
,->
]- if absent, type is assumed from value
- whitespace
- optional value
- if absent,
true
is assumed
- if absent,
- value can have an optional type [
Some valid examples below:
Concrete Annotations
Sometimes you need your annotations to encapsulate logic and you can only do it by mapping
instructions to formal PHP classes. These kind of "concrete" typed annotations can be declared with
the ->
(arrow symbol):
In the example above: when prompted, the annotation parser will instantiate a
new \Model\Field\Validation()
following the declared JSON prototype { "rules" : {...} }
.
Voilà! Instantly classy annotations.
Caching
This package comes with two basic cache handlers. ArrayCache
(for testing) and a very simple FileCache
handler for persistence. Cache handlers can be set during Minime\Annotations\Reader
instantiation:
Or later with Reader::setCache()
:
Public API
Minime\Annotations\Reader
::getClassAnnotations($subject)
Get all annotations from a given class:
::getPropertyAnnotations($subject, $propertyName)
Get all annotations from a given class property:
::getMethodAnnotations($subject, $methodName)
Get all annotations from a given class method:
::getFunctionAnnotations($fn)
Get all annotations from a given full qualified function name or closure:
::getCache()
::setCache(CacheInterface $cache)
::getParser()
::setParser(ParserInterface $cache)
Minime\Annotations\AnnotationsBag
::grep($pattern)
Filters annotations using a valid regular expression and returns a new AnnotationBag
with the matching results.
::useNamespace($pattern)
Isolates a given namespace of annotations. Basically this method filters annotations by a namespace
and returns a new AnnotationBag
with simplified annotations identifiers.
::union(AnnotationsBag $bag)
Performs union operation with a subject AnnotationBag
:
::toArray()
::get($key, $default = null)
::getAsArray($key)
::has($key)
::set($key, $value)
::count
Minime\Annotations\Cache\FileCache
::__construct($storagePath = null)
See example in context with Minime\Annotations\Reader
:
If no path is given OS tmp dir is assumed as cache storage path.
::clear()
Clears entire cache. See example in context with Minime\Annotations\Reader
:
Minime\Annotations\Cache\ArrayCache
::clear()
Clears entire cache. See example in context with Minime\Annotations\Reader
:
Contributions
Found a bug? Have an improvement? Take a look at the issues.
Guide
- Fork minime\annotations
- Clone forked repository
- Install composer dependencies
$ composer install
- Run unit tests
$ phpunit
- Modify code: correct bug, implement features
- Back to step 4
Copyright
Copyright (c) 2013-2014 Márcio Almada. Distributed under the terms of an MIT-style license. See LICENSE for details.
All versions of annotations with dependencies
ext-json Version *
regex-guard/regex-guard Version ~1.0
nikic/php-parser Version >=2.0 <4.0.0