mnapoli / metamodel
此包已被废弃,不再维护。没有推荐替代包。
此包最新版本(0.1.0)没有可用的许可证信息。
0.1.0
2013-07-15 20:24 UTC
Requires
- doctrine/orm: 2.3.*
This package is auto-updated.
Last update: 2020-01-19 10:53:07 UTC
README
Meta是一个允许表示、遍历和操作PHP对象的DSL。
语法
- 通过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在数据源中查找对象。您可以通过实现简单的接口(ObjectManager
或Container
)添加任何数据源。
一些库已经原生支持
-
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));
通过提交拉取请求添加您自己的。
用法
这些都是想法和正在进行中的工作。
- MetaConsole:从控制台简化模型/数据库操作Simplified Model/DB manipulation from console
您可以使用高级对象查询来操作数据库,而不是使用phpMyAdmin或构建管理界面。
-
高级替代方案,例如构建表单、模板(Twig?)PropertyAccess
-
简化对象查询(从数据库)
-
模型中任何元数据的路径:日志、AOP、ACL(例如,“
User(1)
可以编辑Category(12).articles
”)
使用MetaModel的项目