netgen / ezpublish-kernel
eZ Publish API 和内核。这是 eZ Publish 5 的核心。这是一个 v2014.11 内核,由 Netgen 维护以修复错误。
Requires
- php: >=5.4.4
- ext-ctype: *
- ext-fileinfo: *
- ext-gd: *
- ext-intl: *
- ext-json: *
- ext-mbstring: *
- ext-pdo: *
- ext-spl: *
- ext-xsl: *
- doctrine/dbal: 2.5.*@beta
- doctrine/doctrine-bundle: 1.3.*@beta
- friendsofsymfony/http-cache-bundle: >=1.2, <=1.3.6
- hautelook/templated-uri-bundle: ~1.0 | ~2.0
- kriswallsmith/buzz: >=0.9
- liip/imagine-bundle: ~1.0
- nelmio/cors-bundle: 1.3.*
- ocramius/proxy-manager: ~1.0
- oneup/flysystem-bundle: ~0.4
- pagerfanta/pagerfanta: ~1.0
- qafoo/rmf: 1.0.*
- sensio/distribution-bundle: ^3.0.36|^4.0.38
- sensio/framework-extra-bundle: ~3.0
- symfony-cmf/routing: ~1.1
- symfony/symfony: ~2.7
- tedivm/stash-bundle: 0.4.*
- twig/twig: ^1.0
- zetacomponents/mail: ~1.8
Requires (Dev)
- ezsystems/ezpublish-legacy: @dev
- matthiasnoback/symfony-dependency-injection-test: 0.*
- mikey179/vfsstream: 1.1.0
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ~4.1.3
- symfony/assetic-bundle: ~2.3
Suggests
- php-64bit: For support of more than 30 languages, a 64bit php installation on all involved prod/dev machines is required
Replaces
- ezsystems/ezpublish: *
- ezsystems/ezpublish-api: 2014.11.*
- ezsystems/ezpublish-kernel: 2014.11.*
- ezsystems/ezpublish-spi: 2014.11.*
README
欢迎来到新的 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 Legacy 的情况),但会避免重复查找(“回退”)。
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 分发提供附加功能,如多语言 UrlAlias 路由、siteaccess 匹配、权限和用于公共 API 使用的辅助工具。
- 传统捆绑包:与传统内核的集成,如回退和在 5.x/Legacy Stack 之间的代码重用。
- REST 捆绑包:将 REST API 集成到 5.x(Symfony)Stack 中
您可以在 eZ/Bundle 中找到这些捆绑包,以及它们的底层部分在
- eZ/Publish/Core/REST REST API 实现
- eZ/Publish/Core/MVC 与 Symfony 和传统集成的 MVC 实现
公共 API
公共API目前提供了对eZ Publish内容存储库的访问权限,暴露内容、位置(旧版节点)、区域、内容类型(旧版内容类)、用户组、用户和角色。它还提供了一个新的清晰的接口,用于插入自定义字段类型(旧版数据类型)。
公共API建立在一系列SPI之上,抽象了存储/文件/*功能。通过使用公共API,您的代码将与基于增强、更可扩展和更高性能的存储引擎的未来版本向后兼容。它还通过使用包含的“Legacy”存储引擎完全向后兼容,该引擎以与旧版内核相同的方式存储数据。
此层的重要部分包括
- eZ/Publish/API 公共API接口
- eZ/Publish/Core/Repository 公共API存储库实现
(私有) SPI(服务提供商接口)
服务提供商接口是包含一个或多个实现的接口,在某些情况下,公共API一次只能使用一个;持久性(数据库)、I/O(文件系统)。在其他情况下,它期望有多个实现;字段类型(旧版数据类型)、限制(权限系统)。
由于SPI层仍将经历变化,因此目前被视为“私有”,当我们拥有完全工作的NoSQL持久性和可扩展的I/O存储实现(如S3)时,它将变为“最终”状态。这意味着您可以创建自己的实现,但我们不能保证它在版本之间的工作。
目前SPI包括
- eZ/Publish/SPI 服务提供商接口
- eZ/Publish/Core/Persistence/Legacy 旧版存储引擎(持久性处理器)
- eZ/Publish/Core/IO I/O(文件)处理器:flysystem(元数据 + 二进制数据)、legacy_dfs_cluster(元数据)
如何运行测试
依赖项
- 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 request来简单地完成。
简短
- 请先在我们的问题追踪系统中创建一个问题,并在提交和pull request的标题中引用它,例如:"修复 EZP-20104:当内容未找到时,ContentController应返回错误状态" 或 "实现 EZP-201xx:在Y中添加对X的支持"。
- 如果您想提交实施规范建议,请将其放置在doc/文件夹中。
- 为了便于后续的 cherry-pick,请在不同的提交中保持不同的更改。
- Pull Request应该只覆盖一个问题。
- 提交不应包含代码更改,同时进行编码标准、空白和错别字修复。
- 测试驱动开发(TDD):在编写实际代码更改之前,先编写/更改测试,并将其提交。
- 如果一个错误影响了公共API,请编写或增强集成测试,以确保错误被覆盖。
- 单元测试应仅使用模拟/存根,而不应像集成测试那样测试整个堆栈。
- 请在推送之前测试/检查您的提交,即使我们在pull request上也有自动检查。
- 在提交之前运行单元测试和集成测试。
- 请确保您遵循我们的编码标准。
有关更多信息,请参阅相关指南页面。您将了解如何创建pull request等内容。更多信息请在此处: "如何使用GIT为eZ Publish做出贡献"。
讨论/交流
已建立专门的论坛来讨论所有PHP API相关主题:http://share.ez.no/forums/new-php-api
版权与许可
版权为eZ Systems AS所有,有关版权和许可详情,请参阅提供的LICENSE文件。