tath/ core
Tath核心库
Requires
- php: >=7.0.0
- doctrine/common: ^2.6
- tightenco/collect: ^5.3
Requires (Dev)
- phpunit/phpunit: ^5.6
This package is not auto-updated.
Last update: 2024-09-28 19:58:18 UTC
README
Tath Core 是一个库,旨在支持尚未编写的 Tath 库,该库将能够使用注解生成用于 Symfony 的表单和网格,类似于 Doctrine 可以从注解创建模式。
Tath 及其扩展的 Tath Core 正在积极开发中,接口不应被视为稳定。
安装
由于这是预发布软件,我还没有为版本 ID 打标签。当 Tath 的其余部分也发布并足够稳定以至少进行实验时,我将开始使用 semver 标签。目前,使用以下方式安装
composer require tath/core:master@dev
为什么是 'Tath'?
Tath 的想法来自 "龟兔赛跑"。代码编写得清晰易懂。它不是针对高性能优化的。这是乌龟。它旨在促进快速开发,无论是用于原型设计还是当高性能不是关注点时。这是兔子。
Tath 也是一个真实单词。它的意思是“家畜在田里留下的粪便,用作肥料或肥料。”该库旨在帮助开发 CRUD(创建/报告/更新/删除)应用程序,因此您也可以将其视为“CRUD 的废物”。
AnnotationTool
此类包装 Doctrine AnnotationReader 以使其更容易读取您感兴趣的注解。
注解是自身被 @Annotation 注解的类
/**
* @Annotation
* @Target({"ALL"})
*/
class Bobo
{
public $foo;
}
请参阅 Doctrine 文档中的 注解类。
此处文档中的示例基于以下示例类
/**
* Class Foo
* @Waldo(bobo="tea")
*/
class Foo {
/**
* @Plugh(wibble="wobble")
*/
public $bar;
/**
* @Grault(garply="corge")
*/
public function baz() {}
}
此类和以下示例的完整源代码可以在 annotatoin_tool_example.php 中找到。
AnnotationTool::make($className)
为提供的类创建 AnnotationTool。这些是缓存的,当相同的类再次请求时会被重复使用,因为代码在执行过程中不应发生变化。注解按需懒加载到缓存中。
$tool = AnnotationTool::make(Foo::class);
AnnotationTool->getClassAnnotations()
获取所有类级别的注解。
$tool->getClassAnnotations();
这将返回一个包含一个 Waldo 实例的数组,用于 Foo。
AnnotationTool->getClassAnnotationsOfType($annotationClassName)
获取指定类型的所有类级别注解。请注意,注解可能重复,因此即使在只有一个注解的情况下也返回数组。
$tool->getClassAnnotationsOfType(Waldo::class);
这将返回相同的单个 Waldo 实例,因为我们只有这个示例。如果我们请求了不同的类,它将返回一个空数组。
AnnotationTool->getMethods()
获取一个关联数组,包含方法和它们的注解。数组键是方法名,值是注解实例的数组。
$tool->getMethods();
这将返回一个包含单个 Grault 实例的键/值对,键为 'baz'。
AnnotationTool->getMethodAnnotations($methodName)
获取提供的提供方法名的所有注解的数组。
$tool->getMethodAnnotations('baz')
返回一个包含单个 Grault 实例的数组。
AnnotationTool->getTypedMethods($annotationClassName, $methodName)
获取提供的提供方法名的请求注解类型的数组。
$tool->getTypedMethods(Grault::class, 'baz')
返回一个包含单个 Grault 实例的数组。如果提供了不同的注解类名,则此将返回一个空数组。
AnnotationTool->getMethodsWith($annotationClassName)
获取一个关联数组,键为方法名,值为数组。值数组仅包含请求的注解类型。如果没有方法具有请求的注解类型,则返回一个空数组。
$tool->getMethodsWith(Grault::class)
这将返回一个包含单个 Grault 实例的键/值对,键为 'baz'。
AnnotationTool->getProperties()
获取一个关联数组,包含属性及其注解。数组键为属性名,值为注解实例的数组。
$tool->getProperties()
这将返回一个单个键/值对,键为 'bar',值为包含单个 Plugh 实例的数组。
AnnotationTool->getPropertyAnnotations('bar')
获取所有提供属性名的注解的数组。
$tool->getPropertyAnnotations('bar')
返回一个包含单个 Plugh 实例的数组。
AnnotationTool->getTypedProperties(Plugh::class, 'bar')
获取提供属性名的请求注解类型的数组。
$tool->getTypedProperties(Plugh::class, 'bar')
返回一个包含单个 Plugh 实例的数组。如果提供了不同的注解类名称,则此操作将返回一个空数组。
AnnotationTool->getPropertiesWith(Plugh::class)
获取一个关联数组,键为属性名,值为数组。值数组仅包含请求的注解类型。如果没有属性具有请求的注解类型,则返回一个空数组。
$tool->getPropertiesWith(Plugh::class)
这将返回一个单个键/值对,键为 'bar',值为包含单个 Plugh 实例的数组。