2017 © Pedro Peláez
 

library simple-annotations

Simple annotation parser

image

jan-swiecki/simple-annotations

Simple annotation parser

  • Monday, August 17, 2015
  • by jan-swiecki
  • Repository
  • 5 Watchers
  • 55 Stars
  • 123,835 Installations
  • PHP
  • 15 Dependents
  • 0 Suggesters
  • 19 Forks
  • 1 Open issues
  • 12 Versions
  • 11 % Grown

The README.md

PHP Simple Annotations

Installation

Get composer and learn to use it., (*1)

Library is on packagist., (*2)

If you refuse to use composer then instead of include_once "vendor/autoload.php" use include_once "src/DocBlockReader/Reader.php"., (*3)

Test

You need PHPUnit. After you get it run:, (*4)

> git clone https://github.com/jan-swiecki/php-simple-annotations
> cd php-simple-annotations
> composer install
> phpunit

Introduction

This library gives you the ability to extract and auto-parse DocBlock comment blocks., (*5)

Example:, (*6)

class TestClass {
  /**
   * @x 1
   * @y yes!
   */
  private $myVar;
}

$reader = new \DocBlockReader\Reader('TestClass', 'myVar', 'property');
$x = $reader->getParameter("x"); // 1 (with number type)
$y = $reader->getParameter("y"); // "yes!" (with string type)

So as you can see to do this you need to construct Reader object and target it at something. Then you extract data., (*7)

You can point at classes, class methods and class properties., (*8)

  • Targeting class: $reader = new \DocBlockReader\Reader(String $className)
  • Targeting method or property: $reader = new \DocBlockReader\Reader(String $className, String $name [, String $type = 'method']), (*9)

    This will initialize DocBlock Reader on method $className::$name or property $className::$name., (*10)

    To choose method use only two arguments or provide third argument as method string value. To get property value put property string value in third argument., (*11)

To extract parsed properties you have two methods:, (*12)

  • $reader->getParameter(String $key), (*13)

    Returns DocBlock value of parameter $key. E.g., (*14)

    <?php
    class MyClass
    {
     /**
      * @awesomeVariable "I am a string"
      */
     public function fn()
     {
    
     }
    }
    

    then, (*15)

    $reader = new \DocBlockReader\Reader('MyClass', 'fn');
    $reader->getParameter("awesomeVariable")
    

    will return string I am a string (without quotes)., (*16)

  • $reader->getParameters(), (*17)

    returns array of all parameters (see examples below)., (*18)

API

  • Constructor $reader = new \DocBlockReader\Reader(String $className [, String $name [, String $type = 'method'] ]), (*19)

    Creates Reader pointing at class, class method or class property - based on provided arguments (see Introduction)., (*20)

  • $reader->getParameter(String $key), (*21)

    Returns value of parameter $key extracted from DocBlock., (*22)

  • $reader->getParameters(), (*23)

    returns array of all parameters (see examples below)., (*24)

  • $reader->getVariableDeclarations() - See last example below., (*25)

Examples

Examples based on ReaderTest.php., (*26)

Note: DocBlock Reader converts type of values basing on the context (see below)., (*27)

Type conversion example

<?php

include_once "vendor/autoload.php";

class MyClass
{
    /**
     * @var0 1.5
     * @var1 1
     * @var2 "123"
     * @var3 abc
     * @var4 ["a", "b"]
     * @var5 {"x": "y"}
     * @var6 {"x": {"y": "z"}}
     * @var7 {"x": {"y": ["z", "p"]}}
     *
     * @var8
     * @var9 null
     *
     * @var10 true
     * @var11 tRuE
     * @var12 false
     * @var13 null
     * 
     */
    private function MyMethod()
    {
    }
};

$reader = new DocBlockReader\Reader("MyClass", "MyMethod");

var_dump($reader->getParameters());

will print, (*28)

array (size=14)
  'var0' => float 1.5
  'var1' => int 1
  'var2' => string '123' (length=3)
  'var3' => string 'abc' (length=3)
  'var4' => 
    array (size=2)
      0 => string 'a' (length=1)
      1 => string 'b' (length=1)
  'var5' => 
    array (size=1)
      'x' => string 'y' (length=1)
  'var6' => 
    array (size=1)
      'x' => 
        array (size=1)
          'y' => string 'z' (length=1)
  'var7' => 
    array (size=1)
      'x' => 
        array (size=1)
          'y' => 
            array (size=2)
              0 => string 'z' (length=1)
              1 => string 'p' (length=1)
  'var8' => boolean true
  'var9' => null
  'var10' => boolean true
  'var11' => boolean true
  'var12' => boolean false
  'var13' => null

Multi value example

<?php

include_once "vendor/autoload.php";

class MyClass
{
    /**
     * @var x
     * @var2 1024
     * @param string x
     * @param integer y
     * @param array z
     */
    private function MyMethod()
    {
    }
};

$reader = new DocBlockReader\Reader("MyClass", "MyMethod");

var_dump($reader->getParameters());

will print, (*29)

array (size=3)
  'var' => string 'x' (length=1)
  'var2' => int 1024
  'param' => 
    array (size=3)
      0 => string 'string x' (length=8)
      1 => string 'integer y' (length=9)
      2 => string 'array z' (length=7)

Variables on the same line

<?php

include_once "vendor/autoload.php";

class MyClass
{
    /**
     * @get @post
     * @ajax
     * @postParam x @postParam y
     * @postParam z
     */
    private function MyMethod()
    {
    }
};

$reader = new DocBlockReader\Reader("MyClass", "MyMethod");

var_dump($reader->getParameters());

will print, (*30)

array (size=4)
  'get' => boolean true
  'post' => boolean true
  'ajax' => boolean true
  'postParam' => 
    array (size=3)
      0 => string 'x' (length=1)
      1 => string 'y' (length=1)
      2 => string 'z' (length=1)

Variable declarations functionality example

I found below functionality useful for filtering $_GET/$_POST data in CodeIgniter. Hopefully I will soon release my CodeIgniter's modification., (*31)

<?php

include_once "vendor/autoload.php";

class MyClass
{
    /**
     * @param string var1
     * @param integer var2
     */
    private function MyMethod()
    {
    }
};

$reader = new DocBlockReader\Reader("MyClass", "MyMethod");

var_dump($reader->getVariableDeclarations("param"));

will print, (*32)

array (size=2)
  0 => 
    array (size=2)
      'type' => string 'string' (length=6)
      'name' => string 'var1' (length=4)
  1 => 
    array (size=2)
      'type' => string 'integer' (length=7)
      'name' => string 'var2' (length=4)

The Versions

17/08 2015

dev-master

9999999-dev https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotations annotation

17/08 2015

0.3.1

0.3.1.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotations annotation

17/08 2015

0.3.0

0.3.0.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotations annotation

17/08 2015

0.2.2

0.2.2.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotations annotation

15/02 2014

0.2.1

0.2.1.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotations annotation

15/02 2014

0.2.0

0.2.0.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotations annotation

13/04 2013

0.1.8

0.1.8.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotation

13/04 2013

0.1.7

0.1.7.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotation

13/04 2013

0.1.6

0.1.6.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotation

13/04 2013

0.1.5

0.1.5.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotation

13/04 2013

0.1.4

0.1.4.0 https://github.com/jan-swiecki/php-simple-annotations

Simple annotation parser

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

by Jan Święcki

parser docblock annotation

13/04 2013

0.1.1

0.1.1.0

  Sources   Download

The Requires

  • php >=5.3.0