phossa2/shared

其他 phossa2 库的共享库

2.0.28 2017-01-08 06:32 UTC

README

Build Status Code Quality Code Climate PHP 7 ready HHVM Latest Stable Version License

phossa2/shared 是其他 phossa2 库的共享库。

它需要 PHP 5.4,支持 PHP 7.0+ 和 HHVM。它符合 PSR-1PSR-2PSR-4

安装

通过 composer 工具安装。

composer require "phossa2/shared=2.*"

或者将以下行添加到您的 composer.json

{
    "require": {
       "phossa2/shared": "2.*"
    }
}

功能

  • 异常

    所有 phossa2 异常实现 Phossa2\Shared\Exception\ExceptionInterface

    要实现 phossa2 异常接口,

    <?php
    namespace Phossa2\Cache\Exception;
    
    use Phossa2\Shared\Exception\ExceptionInterface;
    
    class BadMethodCallException extends \BadMethodCallException implements ExceptionInterface
    {
    }
  • 消息

    Phossa2\Shared\Message\Message 类是所有 phossa2 包中所有消息类的基类。

    • 定义与包相关的 Message

      消息类用于将消息代码转换为可读消息,并且 必须 定义其自己的属性 $messages

      <?php
      namespace Phossa2\Cache\Message;
      
      use Phossa2\Shared\Message\Message;
      
      class CacheMessage extends Message
      {
          // use current year_month_date_hour_minute
          const CACHE_MESSAGE     = 1512220901;
      
          // driver failed
          const CACHE_DRIVER_FAIL = 1512220902;
      
          protected static $messages = [
              self::CACHE_MESSAGE      => 'cache %s',
              self::CACHE_DRIVER_FAILT => 'cache driver %s failed',
          ];
      }
    • 使用消息类

      通常只使用 Message::get()Message::CONST_VALUE

      use Phossa2\Cache\Message\CaseMessage;
      ...
      // throw exception
      throw new \RuntimeException(
          CacheMessage::get(CacheMessage::CACHE_DRIVER_FAIL, get_class($driver)),
          CacheMessage::CACHE_DRIVER_FAIL
      );
    • 消息加载器

      用于加载不同的代码到消息映射,如语言文件。

      namespace Phossa2\Cache;
      
      use Phossa2\Cache\Message\CaseMessage;
      use Phossa2\Shared\Message\Loader\LanguageLoader;
      
      // set language to 'zh_CN'
      $langLoader = new LanguageLoader('zh_CN');
      
      // will load `CacheMessage.zh_CN.php` in the same dir as `CacheMessage.php`
      CacheMessage::setLoader($langLoader);
      
      // print message in chinese
      echo CacheMessage::get(
          CacheMessage::CACHE_MESSAGE, get_class($object)
      );
    • 消息格式化器

      用于格式化不同设备上的消息,如 HTML 页面。格式化器在 Phossa2\Shared\Message\Message 的所有兄弟之间共享

      namespace Phossa2\Cache;
      
      use Phossa2\Cache\Message\CaseMessage;
      use Phossa2\Shared\Message\Formatter\HtmlFormatter;
      
      // format message as HTML
      $formatter = new HtmlFormatter();
      
      CacheMessage::setFormatter($formatter);
      
      // print as HTML
      echo CacheMessage::get(
          CacheMessage::CACHE_MESSAGE, get_class($object)
      );
  • 实用工具

    这里有一些有用的实用工具。

    • ClassNameTrait

      PHP 5.4 缺少 ::class 功能。 ClassNameTrait 提供了三个静态方法 ::getClassName()::getShortName()::getNameSpace()

    • StaticAbstract

      用于由其他 STATIC 类扩展。

      <?php
      namespace Phossa2\MyPackage;
      
      class MyStaticClass extends \Phossa2\Shared\Base\StaticAbstract
      {
          ...
      }
  • *Trait

    Aware/ 目录中的一些有用 trait

    • TagAwareTrait 添加标签支持
  • 接口

    一些有用的接口在 Contract/ 目录中。

    • ArrayableInterface
  • 支持 PHP 5.4+、PHP 7.0+、HHVM

  • PHP7 为返回类型声明和参数类型声明做好了准备。

  • 符合 PSR-1、PSR-2、PSR-4。

  • 解耦的包可以在没有框架的情况下单独使用。

变更日志

请参阅 CHANGELOG 获取更多信息。

测试

$ composer test

贡献

请参阅 CONTRIBUTE 获取更多信息。

依赖

  • PHP >= 5.4.0

许可证

MIT 许可证