phossa / phossa-shared
The shared package for other phossa packages
Installs: 981
Dependents: 8
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/phossa/phossa-shared
Requires
- php: >=5.4.0
README
Introduction
Phossa-shared is the shared package required by other phossa packages.
Installation
Install via the composer utility.
composer require "phossa/phossa-shared=1.*"
or add the following lines to your composer.json
{
    "require": {
       "phossa/phossa-shared": "^1.0.9"
    }
}
Features
- 
Exception All phossa exceptions implement Phossa\Shared\Exception\ExceptionInterface. To extend phossa exceptions,<?php namespace Phossa\Cache\Exception; class BadMethodCallException extends \Phossa\Shared\Exception\BadMethodCallException { } 
- 
Message MessageAbstractclass is the base class for allMessageclasses in all phossa packages.- 
Define package related MessageclassMessageclass is used to convert message code into human-readable messages, and MUST define its own property$messages.<?php namespace Phossa\Cache\Message; use Phossa\Shared\Message\MessageAbstract; class Message extends MessageAbstract { // 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', ]; } 
- 
Messageclass usageUsually only Message::get()andMessage::CONST_VALUEare used.use Phossa\Cache\Message\Message; ... // throw exception throw new Exception\RuntimeException( Message::get(Message::CACHE_DRIVER_FAIL, get_class($driver)), Message::CACHE_DRIVER_FAIL ); 
- 
Message loader Used for loading different code to message mapping such as language files. namespace Phossa\Cache; use Phossa\Shared\Message\Loader\LanguageLoader; // set language to 'zh_CN' $langLoader = new LanguageLoader('zh_CN'); // will load local `Message\Message.zh_CN.php` language file Message\Message::setLoader($langLoader); // print message in chinese echo Message\Message::get( Message::CACHE_MESSAGE, get_class($object) ); 
- 
Message formatter Used for formatting messages for different devices such as HTML page. namespace Phossa\Cache; use Phossa\Shared\Message\Formatter\HtmlFormatter; // format message as HTML $formatter = new HtmlFormatter(); Message\Message::setFormatter($formatter); // print as HTML echo Message\Message::get( Message::CACHE_MESSAGE, get_class($object) ); 
 
- 
- 
Pattern Commonly used patterns in InterfaceorTrait- 
StaticTraitUsed to be included in a static class which can not extends StaticAbstract<?php namespace Phossa\MyPackage; class MyStaticClass extends SomeClass { use \Phossa\Shared\Pattern\StaticTrait; ... } 
- 
StaticAbstractUsed to be extended by other classes. <?php namespace Phossa\MyPackage; class MyStaticClass extends \Phossa\Shared\Pattern\StaticAbstract { ... } 
- 
SingletonInterfaceandSingletonTraitUsed to be included in a singleton class. <?php namespace Phossa\MyPackage; class MySingletonClass extends SomeClass { use \Phossa\Shared\Pattern\SingletonTrait; ... } Usage, $obj = MySingletonClass::getInstance(); This singleton implementation has a feature which allows singleton class to extended. <?php namespace Phossa\MyPackage; class MyNewSingletonClass extends MySingletonClass { ... } 
- 
ShareableInterfaceandShareableTraitMultiple instances are allowed for Shareable, but only one global copy. Such as global event manager and lots of local event managers.<?php namespace Phossa\Event; use Phossa\Shared\Pattern\ShareableInterface; class EventManager implements ShareableInterface { use \Phossa\Shared\Pattern\ShareableTrait; ... } Usage, // global event manager instance $globalEM = EventManager::getShareable(); // local event manager $localEM = new EventManager(); // this EM global ? if ($globalEM->isShareable()) { ... } else { ... } 
 
- 
- 
Taggable Added TaggableInterfaceandTaggableTrait.
- 
Support PHP 5.4+, PHP 7.0+, HHVM 
- 
PHP7 ready for return type declarations and argument type declarations. 
- 
PSR-1, PSR-2, PSR-4 compliant. 
- 
Decoupled packages can be used seperately without the framework. 
Dependencies
PHP >= 5.4.0