jimmyoak / utilities
3.3.0
2017-01-25 20:53 UTC
Requires
- php: >=5.5.0
- ramsey/uuid: ^3.5
Requires (Dev)
- phpunit/phpunit: >=3.7.0
- satooshi/php-coveralls: dev-master
- dev-master
- 3.3.0
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.0
- 2.5.1
- 2.5.1b
- 2.5.0
- 2.4.0
- 2.3.7
- 2.3.6
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.0
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.2
- dev-master-php53-compatibility
This package is auto-updated.
Last update: 2024-09-09 13:50:33 UTC
README
安装
使用 Composer 安装包
$ composer require jimmyoak/utilities
为了与PHP 5.3兼容,请使用 *.*.*b 版本(是的,我已将它们标记为测试版)
$ composer require jimmyoak/utilities:2.5.1b
特性
- 集合和集合工具(类型化/未类型化集合和集合)
- 枚举基类
- 简单值对象基类
- 事件发布者
- 数组工具
- 文件工具
- 字符串工具
示例
集合
集合
$collection = new \JimmyOak\Collection\Collection(); $collection[] = 'Foo'; $collection[] = 'Bar'; foreach ($collection as $value) { echo $value . ' '; } //prints: Foo Bar
类型化集合
$collection = new \JimmyOak\Collection\TypedCollection(\DateTime::class); $collection[] = new \DateTime(); $collection[] = new \DateInterval('P1D'); //Throws \JimmyOak\Exception\Collection\NotValidObjectTypeException
集合
您可以填充集合为对象、标量...
$collection = new \JimmyOak\Collection\Set(); $collection[] = 'Foo'; $collection[] = 'Foo'; $collection[] = 'Bar'; foreach ($collection as $value) { echo $value . ' '; } //prints: Foo Bar
类型化集合
您可以填充集合为对象、标量...
$collection = new \JimmyOak\Collection\TypedSet(\DateTime::class); $aDateTime = new \DateTime('1992-10-07'); $collection[] = $aDateTime; $collection[] = $aDateTime; try { $collection[] = new \DateInterval('P1D'); //throws \JimmyOak\Exception\Collection\NotValidObjectTypeException } catch (\JimmyOak\Exception\Collection\NotValidObjectTypeException $e) { //Do nothing ^^' } foreach ($collection as $value) { echo $value->format('Y-m-d') . ' '; } //prints: 1992-10-07
当然,您也可以为这些类超维生素化
class DateTimeCollection extends \JimmyOak\Collection\TypedSet { public function __construct() { $this->setObjectType(\DateTime::class); } public function asStrings() { $dates = []; foreach ($this as $value) { $dates[] = $value->format('Y-m-d'); } return $dates; } } $dateTimeCollection = new \DateTimeCollection(); $aDateTime = new \DateTime('1992-10-07'); $dateTimeCollection[] = $aDateTime; $dateTimeCollection[] = $aDateTime; $dateTimeCollection[] = new \DateTime('1992-09-08'); foreach ($dateTimeCollection->asStrings() as $dateTimeString) { echo $dateTimeString . ' - '; } // prints: 1992-10-07 - 1992-09-08 -
EventPublisher
class MessageEvent extends Event { private $message; public function __construct($message) { parent::__construct(); $this->message = $message; } public function getMessage() { return $this->message; } } class MessageSubscriber extends EventSubscriber { public function isSubscribedTo(Event $event) { return $event instanceof MessageEvent; } public function handle(Event $event) { printf( '[%s]: %s %s', $event->getOccurredOn()->format('Y-m-d H:i:s'), $event->getMessage(), PHP_EOL ); } } SingleEventPublisher::instance() ->subscribe(new MessageSubscriber()) ->publish(new MessageEvent('Hi!')) ->publish(new MessageEvent('Bye!'));
数据类型
枚举
class FuelType extends \JimmyOak\DataType\Enum { const GASOLINE = 'gasoline'; const DIESEL = 'diesel'; const KEROSENE = 'kerosene'; } echo 'Available fuels: ' . PHP_EOL; foreach (FuelType::getConstList() as $constName => $value) { echo $constName . ' => ' . $value . PHP_EOL; } echo PHP_EOL; //prints: // Available fuels: // GASOLINE => gasoline // DIESEL => diesel // KEROSENE => kerosene $gasoline = new FuelType(FuelType::GASOLINE); echo $gasoline->value() . PHP_EOL; //prints: 'gasoline' echo (string) $gasoline . PHP_EOL; //prints: 'gasoline' $nonExistentFuelType = new FuelType('grass'); //throws \InvalidArgumentException
简单值对象
class Amount extends \JimmyOak\DataType\SimpleValueObject { public function add(Amount $amount) { return $this->mutate($this->value() + $amount->value()); } } $amount = new \Amount(500); echo (string) $amount . PHP_EOL; //prints: 500 echo $amount->value() . PHP_EOL; //prints: 500 $anotherAmount = new \Amount(700); echo ($amount->equals($anotherAmount) ? 'EQUAL' : 'NOT EQUAL') . PHP_EOL; //prints: NOT EQUAL $newAmount = $amount->add(new Amount(200)); echo $amount->value() . PHP_EOL; //prints: 500 echo $newAmount->value() . PHP_EOL; //prints: 700 echo ($anotherAmount->equals($newAmount) ? 'EQUAL' : 'NOT EQUAL') . PHP_EOL; //prints: EQUAL
工具
数组工具
压扁
$array = [ 'FOO', [ 'BAR' ], 'CHILDREN' => [ 'FOO2' => 'FOOBAR', 'BAR2' => 'FOOBAR2', [ 'FOO2' => 'FOOBAR3' ] ] ]; $notPreservedKeys = \JimmyOak\Utility\ArrayUtils::instance()->flatten($array, \JimmyOak\Utility\ArrayUtils::NO_PRESERVE_KEYS); // Overrides existing keys (overrides keys 0 and FOO2 existing in children) $preservedKeys = \JimmyOak\Utility\ArrayUtils::instance()->flatten($array, \JimmyOak\Utility\ArrayUtils::PRESERVE_KEYS); // Overrides only ASSOCIATIVE KEYS $preservedAssociativeKeys = \JimmyOak\Utility\ArrayUtils::instance()->flatten($array, \JimmyOak\Utility\ArrayUtils::PRESERVE_ASSOCIATIVE_KEYS); var_export($notPreservedKeys); echo PHP_EOL . PHP_EOL; var_export($preservedKeys); echo PHP_EOL . PHP_EOL; var_export($preservedAssociativeKeys); // prints: // array ( // 0 => 'FOO', // 1 => 'BAR', // 2 => 'FOOBAR', // 3 => 'FOOBAR2', // 4 => 'FOOBAR3', // ) // // array ( // 0 => 'BAR', // 'FOO2' => 'FOOBAR3', // 'BAR2' => 'FOOBAR2', // ) // // array ( // 0 => 'FOO', // 1 => 'BAR', // 'FOO2' => 'FOOBAR3', // 'BAR2' => 'FOOBAR2', // )
转换为Xml字符串和ToXml
$array = [ 'details' => [ 'media' => [ 'image' => [ 'anImage.png', 'anotherImage.png', ], 'video' => 'aVideo.mp4', 'audio' => [], ] ] ]; $xml = \JimmyOak\Utility\ArrayUtils::instance()->toXmlString($array); echo $xml . PHP_EOL . PHP_EOL; // prints: <?xml version="1.0" encoding="UTF-8"? ><details><media><image>anImage.png</image><image>anotherImage.png</image><video>aVideo.mp4</video><audio/></media></details> // Converts array into SimpleXmlElement $xml = \JimmyOak\Utility\ArrayUtils::instance()->toXml($array); var_dump($xml); // prints: // class SimpleXMLElement#3 (1) { // public $media => // class SimpleXMLElement#4 (3) { // public $image => // array(2) { // [0] => // string(11) "anImage.png" // [1] => // string(16) "anotherImage.png" // } // public $video => // string(10) "aVideo.mp4" // public $audio => // class SimpleXMLElement#5 (0) { // } // } // }
对象工具
转换为数组
class Foo { public $public = 'public'; protected $protected = 'protected'; private $private = 'private'; private $anObject; /** * Foo constructor. * * @param $anObject */ public function __construct($anObject) { $this->anObject = $anObject; } } class Bar { private $value = 'value'; } $foo = new Foo(new Bar()); //Shallow $arrayed = \JimmyOak\Utility\ObjectUtils::instance()->toArray($foo, \JimmyOak\Utility\ObjectUtils::SHALLOW); var_export($arrayed); // prints: //array ( // 'public' => 'public', //) echo PHP_EOL . PHP_EOL; //Deep $arrayed = \JimmyOak\Utility\ObjectUtils::instance()->toArray($foo, \JimmyOak\Utility\ObjectUtils::DEEP); var_export($arrayed); // prints: //array ( // 'public' => 'public', // 'protected' => 'protected', // 'private' => 'private', // 'anObject' => // array ( // 'value' => 'value', // ), //)
转换为Xml字符串和ToXml
注意:ToXml也会做同样的事情,但返回一个SimpleXml对象
class Foo { public $public = 'public'; protected $protected = 'protected'; private $private = 'private'; private $anObject; /** * Foo constructor. * * @param $anObject */ public function __construct($anObject) { $this->anObject = $anObject; } } class Bar { private $value = 'value'; } $foo = new Foo(new Bar()); $xml = \JimmyOak\Utility\ObjectUtils::instance()->toXmlString($foo, \JimmyOak\Utility\ObjectUtils::SHALLOW); echo $xml . PHP_EOL; // prints: <?xml version="1.0" encoding="UTF-8"? ><public>public</public> $xml = \JimmyOak\Utility\ObjectUtils::instance()->toXmlString($foo, \JimmyOak\Utility\ObjectUtils::DEEP); echo $xml . PHP_EOL; // prints: <?xml version="1.0" encoding="UTF-8"? ><public>public</public><protected>protected</protected><private>private</private><anObject><value>value</value></anObject>
字符串工具
以...开始
echo (\JimmyOak\Utility\StringUtils::instance()->beginsWith('Foo', 'fo') ? 'true' : 'false') . PHP_EOL; //prints: false echo (\JimmyOak\Utility\StringUtils::instance()->beginsWith('Foo', 'fo', \JimmyOak\Utility\StringUtils::CASE_INSENSITIVE) ? 'true' : 'false') . PHP_EOL; //returns: true echo (\JimmyOak\Utility\StringUtils::instance()->beginsWith('Fóo', 'Fo') ? 'true' : 'false') . PHP_EOL; //prints: false echo (\JimmyOak\Utility\StringUtils::instance()->beginsWith('Fóo', 'Fo', \JimmyOak\Utility\StringUtils::ACCENT_INSENSITIVE) ? 'true' : 'false') . PHP_EOL; //returns: true echo (\JimmyOak\Utility\StringUtils::instance()->beginsWith( 'Fóo', 'fo', \JimmyOak\Utility\StringUtils::ACCENT_INSENSITIVE | \JimmyOak\Utility\StringUtils::CASE_INSENSITIVE ) ? 'true' : 'false') . PHP_EOL; //returns: true
以...结束
与startsWith相同的行为,但具有结束针。
移除重音符号
echo \JimmyOak\Utility\StringUtils::instance()->removeAccents('Fóôñ'); // prints: Foon
移除额外空格
echo \JimmyOak\Utility\StringUtils::instance()->removeExtraSpaces(' Foo Bar '); // prints: Foo Bar
是Url和是Email
echo (\JimmyOak\Utility\StringUtils::instance()->isUrl('http://github.com/jimmyoak') ? 'true' : 'false') . PHP_EOL; // prints: true echo (\JimmyOak\Utility\StringUtils::instance()->isUrl('github.com/jimmyoak') ? 'true' : 'false') . PHP_EOL; // prints: false echo (\JimmyOak\Utility\StringUtils::instance()->isEmail('adrian.robles.maiz@gmail.com') ? 'true' : 'false') . PHP_EOL; // prints: true echo (\JimmyOak\Utility\StringUtils::instance()->isEmail('adrian.robles.maiz') ? 'true' : 'false') . PHP_EOL; // prints: false
文件工具
扩展是
echo (\JimmyOak\Utility\FileUtils::instance()->extensionIs('foo.php', 'php') ? 'true' : 'false') . PHP_EOL; // prints: true echo (\JimmyOak\Utility\FileUtils::instance()->extensionIs('foo.php', 'bar') ? 'true' : 'false') . PHP_EOL; // prints: false
创建路径
echo \JimmyOak\Utility\FileUtils::instance()->makePath('/some', 'awesome/', 'and/incredible', 'nice.file'); // prints: /some/awesome/and/incredible/nice.file
获取扩展名
echo \JimmyOak\Utility\FileUtils::instance()->getExtension('file.php'); // prints: php
获取无扩展名名称
echo \JimmyOak\Utility\FileUtils::instance()->getExtension('file.php'); // prints: file
扫描目录
查看FileUtilsTest更好 :P
质量
要在命令行中运行PHPUnit测试,请转到tests目录并发出phpunit
。
如果您发现遵守上的疏忽,请通过拉取请求发送补丁。
贡献
对包的贡献始终受到欢迎!
作者
- [Adrián Robles Maiz (又名 Jimmy K. Oak)] (http://github.com/jimmyoak)
许可证
代码库受MIT许可证的许可。