mynt/utilities

该软件包已被放弃,不再维护。未建议替代软件包。

Mynt Utilities:旨在帮助您解决一些常见问题的类集合,以辅助Web开发。

dev-master 2014-05-09 04:32 UTC

This package is not auto-updated.

Last update: 2016-10-16 06:26:13 UTC


README

Mynt Utilities

Build Status

此项目是我开发应用程序时使用的工具的个人仓库。它处于开发的早期阶段,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'。