adrotec / breeze.server.php
Breeze JS 支持 Symfony 2 或任何 PHP 5.3+ 应用程序
Requires
- php: >=5.3.2
- adrotec/odataphpprod: 1.1.*
- doctrine/orm: >=2.4
- jms/serializer: ~1.0
Suggests
- symfony/validator: Enable Validation
This package is not auto-updated.
Last update: 2024-09-21 12:39:03 UTC
README
该项目不再维护。我们将不会接受拉取请求,解决问题,也不会发布未来的版本。
breeze.server.php
在官方 BreezeJS 文档中展示
这是一个 PHP 库,它通过使用 Doctrine 来简化构建与 Breeze JS 兼容的后端
特性
- 框架无关
- 从 Doctrine 映射生成 Breeze 元数据
- 使用连接加载来扩展相关实体的图
- 使用 JMSSerializer 将查询结果序列化为 JSON
- 使用 Doctrine 单元工作流处理 Breeze 有效载荷的保存
- 支持使用 Symfony 验证组件 进行 Breeze 验证
- 支持 Breeze 继承和多态查询。服务器和客户端都支持 单表继承 和 类表继承。但是,您可以在服务器中使用 映射超类 而无需担忧。
Doctrine
一个文档齐全、功能丰富且流行的 PHP 对象关系映射器,支持多种数据库系统
为什么使用 Doctrine?(来自 doctrine 网站)
- 自 2006 年以来,代码库非常稳定,质量高。
- 非常灵活和强大的对象映射和查询功能。
- 支持所有用例的高级和低级数据库编程。
- 拥有庞大的社区,并与许多不同的框架(Symfony、Zend Framework、CodeIgniter、FLOW3、Lithium 等)集成
目前,此库仅支持 Doctrine ORM。未来的版本应该也支持 Doctrine MongoDB ODM。
一些 Doctrine 类型 已转换为 Breeze 数据类型
内置的 Doctrine 类型及其 breeze 对应类型
string
-String
- SQL VARCHAR 转换为 PHP 字符串。integer
-Int32
- SQL INT 转换为 PHP 整数。smallint
-Int32
- SMALLINT 转换为 PHP 整数。bigint
-Int32
- BIGINT 转换为 PHP 字符串。boolean
-Boolean
- SQL boolean 转换为 PHP 布尔值。decimal
-Decimal
- SQL DECIMAL 转换为 PHP 双精度浮点数。date
-DateTime
- SQL DATETIME 转换为 PHP DateTime 对象。time
-DateTime
- SQL TIME 转换为 PHP DateTime 对象。datetime
-DateTime
- SQL DATETIME/TIMESTAMP 转换为 PHP DateTime 对象。float
-Double
- SQL 浮点数(双精度)到 PHP 双精度浮点数。重要:仅适用于使用小数点作为分隔符的区域设置。- 其他数据类型将回退到
String
JMS 序列化器
一个强大的 PHP 序列化库。提供了对序列化结果的更多控制。例如:如果您想从返回结果中排除一个属性,您可以使用 @Exclude 注解。阅读文档了解更多信息。
Symfony 验证组件
(可选,如果您想支持验证)一个带有 Doctrine 默认支持的强大 PHP 验证服务。
请注意,使用 Symfony 组件并不意味着您必须使用完整的 symfony 框架,因为它们是解耦的并且是独立组件的组件。
一些验证约束被转换为等效的breeze 验证器。
内置验证约束及其 Breeze 等效验证器
- Luhn - creditCard
- Email - emailAddress
- Length - maxLength
- Regex - regularExpression
- NotBlank - required
- Url - url
示例/演示
安装
该库使用 composer,PHP 的包管理器。
将这些行添加到您的 composer.json
文件中,并运行 composer update
"require": { "adrotec/breeze.server.php": "dev-master" }
请注意,由于该库依赖于 ConstraintViolation::getConstraint()
方法,而该方法在旧版本中尚不可用,因此 symfony/validator - 2.6+
是 "adrotec/breeze.server.php"
所必需的。
使用
该库提供了一个基本的框架,可以轻松引导 API。您可以使用 Application
或 StandaloneApplication
类。
使用 Application
类
/* @var $entityManager instanceof \Doctrine\ORM\EntityManager */ /* @var $serializer instanceof \JMS\Serializer\SerializerInterface */ /* @var $validator instanceof \Symfony\Component\Validator\Validator\ValidatorInterface */ $app = new Adrotec\BreezeJs\Framework\Application( $entityManager, $serializer, $validator ); $app->addResources(array( 'Employees' => 'EmpDirectory\Model\Employee', 'Departments' => 'EmpDirectory\Model\Department', 'Jobs' => 'EmpDirectory\Model\Job', )); /* @var $request instanceof \Symfony\Component\HttpFoundation\Request */ $response = $app->handle($request);
使用 StandaloneApplication
类
$loader = require 'vendor/autoload.php'; $app = new Adrotec\BreezeJs\Framework\StandaloneApplication(); $app->setConnection(array( 'driver' => 'pdo_mysql', 'host' => 'localhost', 'dbname' => 'employees', 'user' => 'root', 'password' => '' )); // configuring doctrine, serializer and validator // using xml mappings $app->addMapping(array( 'namespace' => 'EmpDirectory\Model', 'type' => 'xml', 'extension' => '.orm.xml', // default ".dcm.xml" 'doctrine' => __DIR__ . '/src/EmpDirectory/config/doctrine', // doctrine directory 'serializer' => __DIR__ . '/src/EmpDirectory/config/serializer', // [optional] serializer metadata directory 'validation' => __DIR__ . '/src/EmpDirectory/config/validation.xml', // [optional] validation file )); // limiting the api to certain classes $app->addResources(array( // Resource name => Class name 'Employees' => 'EmpDirectory\Model\Employee', 'Jobs' => 'EmpDirectory\Model\Job', 'Departments' => 'EmpDirectory\Model\Department', )); $app->build(); $app->run();
与 Symfony 2
为此有一个 bundle!