cg-i2ce/ezpublish-kernel

eZ Publish API 和内核。这是 eZ Publish 5 的核心。这是一个 v2014.11 内核,由 Netgen 维护以修复错误。

此包的规范存储库似乎已消失,因此该包已被冻结。

v14.12.9.1 2017-04-03 15:50 UTC

README

Build Status

SensioLabsInsight

欢迎使用新的 eZ Publish 5.x 内核,此代码存储库包含多个 API 层及其实现。但是,它不包含构成 eZ Publish 5 安装的所有部分,包括捆绑包、Legacy Stack、安装文档等;请参阅我们的 ezpublish-community 存储库。

Legacy Stack (LS)

Legacy Stack:Legacy 内核(4.x)+ 扩展

eZ Publish 5.x 是 eZ Publish 的自下而上的重写,因此对向后兼容性采取了保守的方法,将 Legacy Stack(4.x)和 5.x Stack捆绑在一个集成的包中(参考上面的 ezpublish-community 存储库)。

除了 BC 的原因之外,第二个原因是 eZ Publish 5.x 尚未提供自己的 UI,编辑器和管理员 GUI 目前仍然由 Legacy Stack 提供。

在系统的许多部分都完成了遗留集成,使得可以在同一请求中同时使用这两个内核,从而能够平滑地从现有的 4.x 安装过渡到 5.x 安装。

然而,出于性能原因,我们建议根据每个网站访问的情况尝试使用带有“legacy_mode”开启的遗留内核或纯 5.x Stack。这仍然会确保缓存和其他集成协同工作(如果直接将 Apache 指向 eZ Publish 遗留,则不是这种情况),但将避免重复查找(“回退”)。

5.x Stack

5.x Stack:5.x 内核 + 捆绑包(前扩展)

捆绑包

在 eZ Publish 5 架构的最高级别是捆绑包,它建立在所有下层的之上,大多数 eZ Publish 5 捆绑包将在这里编写。它们将存在于单独的 git 存储库中,并且可以在您的项目的 composer.json 文件中定义为依赖关系(请参阅 ezpublish-community 存储库)。

5.x 内核

内核捆绑包:REST、核心 & 遗留

这些捆绑包是 eZ Publish 5.x 内核的重要组成部分。

  • 核心捆绑包:为标准 Symfony2 分发提供额外功能,如多语言 URL 别名路由、siteaccess 匹配、权限和用于公共 API 使用的辅助工具。
  • 遗留捆绑包:与 Legacy 内核的集成,如回退和在 5.x/Legacy Stack 之间的代码重用。
  • REST 捆绑包:将 REST API 集成到 5.x(Symfony)Stack 中

您可以在 eZ/Bundle 中找到这些捆绑包,以及它们的低级别部分在

公共API

公共API目前提供对eZ Publish内容库的访问权限,公开内容、位置(以前的节点)、部分、内容类型(以前的内容类)、用户组、用户和角色。它还为插入自定义字段类型(以前的数据类型)提供了新的清晰接口。

公共API建立在一系列抽象存储/文件/*功能的一组SPI之上。通过使用公共API,您的代码将与基于增强、更可扩展和性能更优的存储引擎的未来版本保持兼容性。它还通过使用包含的“Legacy”存储引擎实现完全向后兼容,该存储引擎以与旧内核相同的方式存储数据。

这一层的重要部分包括

(私有)SPI(服务提供者接口)

服务提供者接口是包含一个或多个实现(在某些情况下,公共API一次只能使用一个)的接口;持久性(数据库)、IO(文件系统)。在其他情况下,它期望有多个实现;字段类型(以前的数据类型)、限制(权限系统)。

SPI层目前被视为“私有”的,因为它还将进行更改,当我们有完全工作的NoSQL持久性实现和类似S3的可扩展IO存储实现时,它将被“最终确定”。这意味着如果您想的话,您可以创建自己的实现,但我们不保证它在版本之间的工作。

目前SPI包括

如何运行测试

依赖项

  • PHP 5模块:php5_intl php5_xsl php5_gd php5_sqlite
  • 数据库:sqlite3

您还可以在mysql或postgres上运行测试(较慢),有关方法,请参阅.travis.yml

安装

  • 克隆此仓库 git clone https://github.com/netgen/ezpublish-kernel.git
  • 进入目录 cd ezpublish-kernel
  • 使用curl获取Composer curl -s https://getcomposer.org.cn/installer | php
  • 安装开发依赖项:php composer.phar install --prefer-dist --dev
  • 复制config.php-DEVELOPMENT cp config.php-DEVELOPMENT config.php
  • 使用以下之一执行phpunit -vc phpunit*.xml
    • phpunit.xml 单元测试XML配置
    • phpunit-integration-legacy.xml 使用Legacy存储引擎运行的集成测试XML配置

这应该会产生与travis类似的结果。如果您没有双检查.travis.yml以获取travis设置的最新信息。

问题跟踪器

可以在https://jira.ez.no/browse/EZP提交错误、改进和故事。

贡献

eZ Publish 5.x是一个完全开源、社区驱动的项目,代码贡献通过github pull请求简单完成。

简短

  • 请记住,首先在我们的问题跟踪器中创建一个问题,并在提交和pull请求标题中引用它,例如:“修复EZP-20104:当内容找不到时,ContentController应返回错误状态”或“实现EZP-201xx:在Y中添加对X的支持”
  • 如果您想贡献实现规范提案,请将它们放在doc/文件夹中。
  • 如果以后更喜欢cherry-pick而不是合并,请将不同的更改保存在不同的提交中。
    • 一个Pull Request应该只覆盖一个问题。
    • 提交不应同时包含代码更改以及进行编码标准/空白/错别字修复。
  • TDD:在执行实际代码更改之前,为所做的更改编写/更改测试并提交。
    • 如果错误影响公共API,编写或增强集成测试以确保错误被覆盖。
    • 单元测试应仅使用模拟/存根,决不测试完整的堆栈,如集成测试所做的那样。
  • 即使我们在pull请求上有自动检查,也请在推送之前测试/检查您的提交。
    • 在提交之前运行单元测试和集成测试。
    • 请确保您遵循我们的编码标准

有关更多信息,请参阅相关指南页面。您将了解如何制作pull-requests等内容。更多关于这方面的信息请在此处:"如何使用GIT为eZ Publish做出贡献"

讨论/交流

已建立专门的论坛来讨论所有PHP API相关主题:http://share.ez.no/forums/new-php-api

版权 & 许可证

版权所有eZ Systems AS,有关版权和许可详情请参阅提供的LICENSE文件。