mynt / utilities
Mynt Utilities:旨在帮助您解决一些常见问题的类集合,以辅助Web开发。
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2016-10-16 06:26:13 UTC
README
Mynt Utilities
此项目是我开发应用程序时使用的工具的个人仓库。它处于开发的早期阶段,API可能在任何时间发生变化,通常会导致BC中断。
Mynt\Utility\Url
此命名空间包含与URL相关的工具。
解析、表示和操作URL
Mynt URL是创建或操作URL字符串的简单OOP方法。
<?php // construct a URL $url = new Url(); $url->setHostname('google.com'); $url->setPathParts(array('channel67', 'b', 89009)); $this->assertEquals('http://google.com/channel67/b/89009', $url->getUrl()); $url = new Url(); $url->setProtocol('https'); $url->setHostname('google.com'); $url->setPath('search/query/'); $url->setUser('tickner'); $url->setPass('chris'); $url->setQuery('test=no&this=bar'); $url->setPort(9000); $this->assertEquals('https://tickner:chris@google.com:9000/search/query?test=no&this=bar', $url->getUrl());
它还允许您
- getPathParts - 路径数组(对路由等很有用)
- setPathParts - 使用数组设置路径
- getQueryAsArray - URL查询字符串的键/值数组
- setQueryFromArray - 使用键/值数组设置URL的查询字符串
Mynt\Utility\DateTime
此命名空间包含与DateTime相关的工具。
间隔DateTime数据系列'
这非常新,需要进行一些重构。IntervalDataSeries仅计算特定间隔周围的数据的平均值。大多数用例将受益于累积(加法)策略,而不是平均值。
通常在绘图或处理统计数据时,我们遇到与特定DateTime关联的一些数据,并需要根据特定间隔以某种方式处理这些数据。例如,计算每小时的销售量或绘制网页点击量。如果我们想在PHP中执行此处理,IntervalDataSeries可能会有所帮助。
// we have some data and want an array with the average data at each minute 6:00, 6:01, and 6:02 $start = new \DateTime('Oct 8, 1987 6:00pm'); $end = new \DateTime('Oct 8, 1987 6:02pm'); $window = new \DateInterval('PT30S'); // 30 second window +/-, 1 minute interval // we construct the interval series and add all of our data from the data source, they happen at any random DateTime $series = new IntervalDataSeries($start, $end, $window); $series->addData(new \DateTime('Oct 8, 1987 6:00:04pm'), 1); $series->addData(new \DateTime('Oct 8, 1987 6:00:29pm'), 5); $series->addData(new \DateTime('Oct 8, 1987 6:00:29pm'), 12); $series->addData(new \DateTime('Oct 8, 1987 6:00:45pm'), 10); $series->addData(new \DateTime('Oct 8, 1987 6:01:07pm'), 30); $series->addData(new \DateTime('Oct 8, 1987 6:01:49pm'), 1); $series->addData(new \DateTime('Oct 8, 1987 6:02:04pm'), 1); // when we call toArray on the series, we receive our averaged data list (based on start, end, and an interval) $expected = array( '1987-10-08 18:00:00' => 6, '1987-10-08 18:01:00' => 20, '1987-10-08 18:02:00' => 1, ); $series = $series->toArray('Y-m-d H:i:s'); $this->assertEquals($expected, $series);
如果您想将其变为连续数据(即,如果间隔小于数据频率,则间隔之间没有零),请参阅ContinuousIntervalDataSeries类。
待办事项
[ ] 使其更灵活,以便我们可以有各种策略。目前我们只有平均策略。[ ] 完成上述操作后,添加累积策略,将窗口内的所有数据相加(这将非常有用)
DateHelper
Mynt DateHelper是一个非常简单的类,旨在成为一个静态类的存储库,这些类有助于在PHP中使用日期。对于任何需要告诉用户自DateTime以来过去了多长时间(或进入未来)的应用程序非常有用。
DateHelper::agoString($dateTime, $preciseToTheSecond)
接受一个dateTime实例并返回一个英语字符串,解释DateTime有多久以前(或进入未来)。可选的第二个参数$preciseToTheSecond允许您包含秒(默认为false)。
<?php $this->assertEquals( '1 hour, 15 minutes ago', DateHelper::agoString(new \DateTime('-75 minutes -45 seconds')) ); $this->assertEquals( '1 hour, 15 minutes, 45 seconds ago', DateHelper::agoString(new \DateTime('-75 minutes -45 seconds'), true) );
DateHelper::intervalString($startDateTime, $endDateTime, $preciseToTheSecond)
与agoString相同,但允许您指定两个字符串(DateHelper::agoString简单地调用此函数并使用NOW作为第二个dateTime)
DateHelper::agoInSeconds($startDateTime, $endDateTime)
将返回两个日期之间的近似秒数差异。这处于测试阶段,不应信任任何超过30天的值。如果没有传递$startDateTime,则默认为当前DateTime。
Mynt\Utility\String
此命名空间包含与字符串相关的实用工具
处理字符串
Mynt String 帮助处理字符串。
String::slugify($string)
Slugify 会将字符串转换为对 URL 友好的形式。
<?php $slug = Mynt\String::slugify($string);
String::pluralize($num, $text)
如果 $num 不等于 1,Pluralize 将在 $text 后添加 's'。