Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Entwurfsmuster-Iteratormuster

PHP-Entwurfsmuster-Iteratormuster

WBOY
WBOYOriginal
2016-08-08 09:20:58808Durchsuche

1. Konzepteinführung

1. Durchlaufen Sie die internen Elemente eines Aggregatobjekts, ohne die interne Implementierung zu kennen.
2. Im Vergleich zu herkömmlichen Programmiermustern kann das Iteratormuster die zum Durchlaufen von Elementen erforderlichen Operationen verbergen.
3. Der hier vorgestellte Iterator muss Iterator in PHP SPL implementieren und 5 Methoden implementieren (aktuell, weiter, gültig, rewid, Schlüssel)

2. Codeanzeige

<code><span>namespace</span><span>brave</span><span>class</span><span>AllUser</span><span>implements</span> \<span>Iterator</span>
{
    //所有<span>user</span>的<span>id</span><span>protected</span> $<span>ids</span>;
    <span>//保存数据库查询的对象,如果有就不需要在次查询了,可使用注册模式</span><span>protected</span><span>$data</span> = <span>array</span>(); 
    <span>//表示迭代器当前的位置</span><span>protected</span><span>$index</span>;

    <span><span>function</span><span>__construct</span><span>()</span>
    {</span><span>$db</span> = Factory::getDatabase();
        <span>$result</span> = <span>$db</span>->query(<span>"select id from user"</span>);
        <span>$this</span>->ids = <span>$result</span>->fetch_all(MYSQLI_ASSOC);
    }

    <span>//获取当前用户对象</span><span><span>function</span><span>current</span><span>()</span>
    {</span><span>$id</span> = <span>$this</span>->ids[<span>$this</span>->index][<span>'id'</span>];
        <span>return</span> Factory::getUser(<span>$id</span>);
    }

    <span>//进入下一个索引</span><span><span>function</span><span>next</span><span>()</span>
    {</span><span>$this</span>->index ++;
    }

    <span>//检查当前是否有数据</span><span><span>function</span><span>valid</span><span>()</span>
    {</span><span>return</span><span>$this</span>->index < count(<span>$this</span>->ids);
    }

    <span>//使当前的指针回到开始位置</span><span><span>function</span><span>rewind</span><span>()</span>
    {</span><span>$this</span>->index = <span>0</span>;
    }

    <span>//获取当前的索引值</span><span><span>function</span><span>key</span><span>()</span>
    {</span><span>return</span><span>$this</span>->index;
    }

}</code>

3. Ausführungscode

<code><span>//迭代器模式实例</span><span>$users</span> = <span>new</span> AllUser();
<span>foreach</span> (<span>$users</span><span>as</span><span>$user</span>) {
    var_dump(<span>$user</span>);
    <span>echo</span><span>'<hr>'</span>;
}</code>

Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.

Das Obige hat das Iteratormuster des PHP-Entwurfsmusters vorgestellt, einschließlich seiner Aspekte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Webserver zwei ModiNächster Artikel:Webserver zwei Modi