tath/core

Tath核心库

dev-master 2017-01-01 15:11 UTC

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 实例的数组。