mnapoli/metamodel

此包已被废弃,不再维护。没有推荐替代包。
此包最新版本(0.1.0)没有可用的许可证信息。

0.1.0 2013-07-15 20:24 UTC

This package is auto-updated.

Last update: 2020-01-19 10:53:07 UTC


README

Meta是一个允许表示、遍历和操作PHP对象的DSL

Build Status Coverage Status

语法

  • 通过ID获取特定对象
Article(1)

MetaModel与Doctrine集成,但可以连接到任何东西。

  • 获取某个类型的所有对象
Article(*)
  • 对象图遍历(获取某个分类下的所有文章)
Category(1).articles
  • 调用方法
// Will call generateExtract() on all articles
Article(*).generateExtract()
  • 字段过滤(尚未实现)
Article[author="bob"]

运算符

UserGroup[ users.contains(User(1)) ]
UserGroup[ users.count() > 0 ]
  • 服务
CacheService.flush()

MetaModel与容器、注册表、任何东西集成...

集成

MetaModel在数据源中查找对象。您可以通过实现简单的接口(ObjectManagerContainer)添加任何数据源。

一些库已经原生支持

  • Doctrine的实体管理器:MetaModel\Bridge\Doctrine\EntityManagerBridge

    $metaModel = new MetaModel();
    $metaModel->addObjectManager(new EntityManagerBridge($entityManager));
  • PHP-DI容器:MetaModel\Bridge\PHPDI\PHPDIBridge

    $metaModel = new MetaModel();
    $metaModel->addContainer(new PHPDIBridge($container));

通过提交拉取请求添加您自己的。

用法

这些都是想法和正在进行中的工作。

您可以使用高级对象查询来操作数据库,而不是使用phpMyAdmin或构建管理界面。

  • 高级替代方案,例如构建表单、模板(Twig?)PropertyAccess

  • 简化对象查询(从数据库)

  • 模型中任何元数据的路径:日志、AOP、ACL(例如,“User(1)可以编辑Category(12).articles”)

使用MetaModel的项目