skwi/project-base-bundle

为项目提供基础代码的包

2.5 2018-06-19 08:04 UTC

This package is auto-updated.

Last update: 2024-08-29 04:03:18 UTC


README

此包不再维护,因为它违反了几个SOLID原则。

SkwiProjectBaseBundle

Build Status

这是一个包含我在项目中经常使用的部分基础代码的包。请随意使用或改进它。

兼容性

当前版本的包仅与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 文档使用 PHPDocphpdoc-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 版本用于新功能(向后兼容);
  • 向后兼容性错误修复的补丁版本。