skwi / project-base-bundle
为项目提供基础代码的包
Requires
- php: >=5.3.0
- doctrine/common: >=2.1
- pagerfanta/pagerfanta: 1.0.*@dev
- symfony/framework-bundle: >=2.1
Requires (Dev)
- atoum/atoum: dev-master
- atoum/atoum-bundle: dev-master
- doctrine/orm: >=2.2.3
- evert/phpdoc-md: ~0.0.7
- phpdocumentor/phpdocumentor: 2.*
- sensio/generator-bundle: ~2.3
Suggests
- doctrine/mongodb-odm: If you want to use BaseManager with MongoDB and Doctrine ODM [1.0.*@dev]
- doctrine/mongodb-odm-bundle: If you want to use BaseManager with MongoDB and Doctrine ODM [3.0.*@dev]
- doctrine/orm: If you want to use BaseManager with Doctrine ORM [~2.2,>=2.2.3]
This package is auto-updated.
Last update: 2024-08-29 04:03:18 UTC
README
此包不再维护,因为它违反了几个SOLID原则。
SkwiProjectBaseBundle
这是一个包含我在项目中经常使用的部分基础代码的包。请随意使用或改进它。
兼容性
当前版本的包仅与Symfony 2.5+兼容。1.0版本提供对旧版Symfony的兼容性。
设置
安装SkwiProjectBaseBundle
假设您已安装composer(composer.phar或composer二进制文件),请运行以下命令:
php composer.phar require skwi/project-base-bundle "dev-master"
配置
在app/AppKernel.php
中注册此包
// app/AppKernel.php public function registerBundles() { return array( // ... new \Skwi\Bundle\ProjectBaseBundle\SkwiProjectBaseBundle(), ); }
在您的app/config.yml文件中,您可能需要设置一些参数
skwi_project_base: entity_bundle_name: FooBarBundle # Default bundle when extending BaseManager (see below) entity_bundle_namespace: \Foo\Bundle\BarBundle # Default bundle namespace password_encoder: sha512 # Password encoder method pager_max_per_page: 10 # Default max items per page when using paginator in the BaseManager kernel_root_dir: %kernel.root_dir%
使用
基础管理器
此抽象类为 Doctrine ORM 或 Doctrine ODM 以及 MongoDb 管理的实体提供了方法。
哲学
想法是扩展此类以管理特定的实体。其他实体可以由单个管理器管理,但 $objectName
和 $repository
属性将用于默认管理实体。
项目设置
建议管理器扩展此类并将其注入为服务。
# service.yml mybundle.manager.poney : class : 'Foo\\Bundle\\BarBundle\\Manager\\PoneyManager' parent : skwi.projectbase.base_manager calls : - [setObjectManager, [@doctrine.orm.entity_manager]] - [setObject, ['FooBarBundle:Poney']]
<?php namespace Foo\Bundle\BarBundle\Manager; use Skwi\Bundle\ProjectBaseBundle\Manager; class PoneyManager extends BaseManager { #... }
方法
基础管理器提供的方法在API 文档中描述。
密码编码器
密码编码器类提供了在 app/config.yml 文件中定义算法的 Symfony 的 PasswordEncoderInterface 实现。
它作为服务在容器中可用。
$encoder = $this->getContainer()->get('skwi.projectbase.password_encoder'); $encodedPassword = $encoder->encodePassword($rawPassword, $salt); $isPasswordValid = $encoder->isPasswordValid($encodedPassword, $rawPassword, $salt);
文本助手
文本助手是一个静态类。
# Slug a string $sluggedString = TextHelper::slug($rawString);
注意:当前的 slug 方法相当基础,可能会在未来的更新中进行改进。请确保使用 1.* 版本以保持兼容性。
基础视图
此包提供基础 Twig 视图。
{% extends 'SkwiProjectBaseBundle::base.html.twig' %}
它加载以下库:
注意:库从 CDN 加载,对于低于 IE9 版本的 IE,有本地回退。
表单模板
此包还提供了 Bootstrap 3 的预设表单模板。
{% form_theme form 'SkwiProjectBaseBundle:Form:fields.html.twig' %} {# or #} {% form_theme form 'SkwiProjectBaseBundle:Form:fields-horizontal.html.twig' %}
Twig 扩展
TextExtension
TextExtension 提供以下 Twig 过滤器:
{{ string|slug # will slug the string using the bundle's TextHelper }} {{ string|striptags # will apply the strip_tags php method to the string }}
测试
单元测试使用 atoum 编写。在运行 composer install
时,您将获得 atoum 以及其他依赖项。要运行测试,您需要运行以下命令:
vendor/bin/atoum
API 文档
API 文档使用 PHPDoc 和 phpdoc-md 生成。
要生成它,您需要运行以下命令:
vendor/bin/phpdoc -d src/ -t src/Skwi/Bundle/ProjectBaseBundle/Resources/doc/ --template="xml"
vendor/bin/phpdocmd src/Skwi/Bundle/ProjectBaseBundle/Resources/doc/structure.xml src/Skwi/Bundle/ProjectBaseBundle/Resources/doc
待办事项
- 删除或增强数据格式助手
- 在文本助手中增强 slug 方法
- 删除不太有用的 twig 编码器扩展
- 检查最新的 PHP 版本以进行密码编码
- 升级到 symfony 2.5,使用属性访问器
已知问题
版本控制
从版本 2.0.0 开始,版本标签按语义方式格式化
MAJOR.MINOR.PATCH.
- MAJOR 版本用于不兼容的 API 更改,可能导致向后不兼容;
- MINOR 版本用于新功能(向后兼容);
- 向后兼容性错误修复的补丁版本。