pilulka/iterator

该软件包的官方仓库似乎已不存在,因此该软件包已被冻结。

dev-master 2024-03-14 09:56 UTC

This package is auto-updated.

Last update: 2024-07-14 10:51:38 UTC


README

这个库允许您遍历逻辑可迭代的流或资源。

已实现以下资源。

Curl Http Iterator

它允许您遍历给定的URL掩码,直到资源响应状态码与200 Ok不同。

示例

$mask = 'http://example.com/?p=%d';
$urlIterator = new UrlIterator($mask);
$i = 0;
foreach ($urlIterator as $pageContent) {
    printf(
        "Url: %s, length: %d\n",
        $urlIterator->getIterationUrl(),
        strlen($pageContent)
    );
    if($i++ > 3) break; // to simulate invalid response
}

更多用法请参阅这里

Json Collection Iterator

它允许您遍历非常简单的REST集合。

示例

use Pilulka\Iterators\Http;
$urlIterator = new Http\UrlIterator('http://private-62aa2-pilulkaiterator.apiary-mock.com/items');
$jsonIterator = new Http\JsonCollectionIterator($urlIterator);
$i = 0;
echo "Url: {$jsonIterator->getUrlIterator()->getIterationUrl()}\n";
foreach ($jsonIterator as $item) {
    echo var_export($item) . "\n";
    if($i++ > 2) break;
}

Email IMAP iterator

允许您遍历邮件收件箱。

示例

use Pilulka\Iterators\Mail\ImapIterator;
$cfg = [
    'host' => '<hostname>', // e.g. {imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX
    'username' => '<username>', // e.g. jon.doe@example.com
    'password' => '<password>',
    'filter' => '<filter>', // See: https://php.ac.cn/manual/en/function.imap-search.php
];
$iterator = new ImapIterator(
    $cfg['host'],
    $cfg['username'],
    $cfg['password']
);
$iterator->setFilter($cfg['filter']); // e.g. FROM "john@example.com"
$i = 0;
foreach ($iterator as $mail) {
    /** @var \Pilulka\Iterators\Mail\Model\Mail $mail */
    foreach ($mail->getAttachments() as $attachment) {
        if($attachment->isAttachment()) {
            printf(
                "File name: %s\nName:%s\nContent:\n%s",
                $attachment->getFilename(),
                $attachment->getName(),
                $attachment->getAttachment()
            );
        }
    }
    if($i++ > 1) break;
}

发布说明

此软件包满足我们公司的需求 - 您应将其视为实验性的。

我们将非常欢迎任何反馈或提供的拉取请求。