rudrax / annotations
扫描项目中所有类的脚本;
1.0.1
2015-06-26 16:38 UTC
This package is auto-updated.
Last update: 2024-09-07 21:38:25 UTC
README
简单轻量级的PHP类与方法注释读取器
示例类 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()
{
}
}
示例使用。
include 'User.php';
$annotations = new Annotations();
$result = $annotations->getClassAnnotations('User');
print_r($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
)
)
)
$result = $annotations->getMethodAnnotations('User', 'create');
print_r($result);
结果
Array
(
[Permission] => Array
(
[0] => view
[1] => edit
)
[Role] => Array
(
[0] => administrator
)
)
创建带注释的对象。
您可以快速创建带注释的对象。
示例带注释的类。
<?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_once 'Annotation/Annotation.php';
require_once 'Annotation/PermissionAnnotation.php';
require_once 'Annotation/RoleAnnotation.php';
$annotations->setDefaultAnnotationNamespace('\Annotation\\');
$result = $annotations->getMethodAnnotationsObjects('User', 'create');
print_r($result);
结果
Array
(
[Permission] => Base\Annotation\PermissionAnnotation Object
(
[data:protected] => Array
(
[0] => view
[1] => edit
)
)
[Role] => Base\Annotation\RoleAnnotation Object
(
[data:protected] => Array
(
[2] => administrator
)
)
)