phppkg / annotations
Simple and Lightweight PHP Class & Methods Annotations Reader
v1.0.0
2021-09-27 05:40 UTC
Requires
- php: >7.1.0
- ext-mbstring: *
- toolkit/stdlib: ~1.0
This package is auto-updated.
Last update: 2024-12-20 04:52:00 UTC
README
Simple and Lightweight PHP Class & Methods Annotations Reader
Forked from eriknyk/Annotations
项目地址
安装
- composer 命令
composer require phppkg/annotations
- composer.json
{ "require": { "phppkg/annotations": "dev-master" } }
- 直接拉取
git clone https://github.com/phppkg/annotations.git // github
使用
Sample class User.php
<?php /** * @Defaults(name="user1", lastname = "sample", age='0', address={country=USA, state=NY}, phone="000-00000000") * @assertResult(false) * @cache(collation = UTF-8) */ class User { /** * @cache(true) * @type(json) * @limits(start=10, limit=50) */ function load(){ } /** * create a record * * @Permission(view) * @Permission(edit) * @Role(administrator) */ public function create() { } }
Sample use.
- get class annotations:
include 'User.php'; $annotations = new PhpPkg\Annotations\Annotations(); $result = $annotations->getClassAnnotations('User'); print_r($result);
Result:
Array ( [Defaults] => Array ( [0] => Array ( [name] => user1 [lastname] => sample [age] => 0 [address] => Array ( [country] => USA [state] => NY ) [phone] => 000-00000000 ) ) [assertResult] => Array ( [0] => false ) [cache] => Array ( [0] => Array ( [collation] => UTF-8 ) ) )
- get method annotations:
$result = $annotations->getMethodAnnotations('User', 'create'); print_r($result);
Result:
Array ( [Permission] => Array ( [0] => view [1] => edit ) [Role] => Array ( [0] => administrator ) )
Creating Annotated objects.
You can crate fast annotated objects.
Sample Annotated Classes.
<?php // Annotation.php abstract class Annotation { protected $data = array(); public function __construct($args = array()) { $this->data = $args; } public function set($key, $value) { $this->data[$key] = $value; } public function get($key, $default = null) { if (empty($this->data[$key])) { return $default; } return $this->data[$key]; } public function exists($key) { return isset($this->data[$key]); } }
<?php // PermissionAnnotation.php namespace Annotation; class PermissionAnnotation extends Annotation { }
<?php
namespace Base\Annotation;
// RoleAnnotation.php
class RoleAnnotation extends Annotation
{
}
require dirname(__DIR__) . '/tests/boot.php'; $annotations->setDefaultAnnotationNamespace('\Annotation\\'); $result = $annotations->getMethodAnnotationsObjects('User', 'create'); print_r($result);
Result:
Array
(
[Permission] => Base\Annotation\PermissionAnnotation Object
(
[data:protected] => Array
(
[0] => view
[1] => edit
)
)
[Role] => Base\Annotation\RoleAnnotation Object
(
[data:protected] => Array
(
[2] => administrator
)
)
)
unit test
phpunit
Related
LICENSE
MIT