Heim > Backend-Entwicklung > PHP-Tutorial > 1ArrayAccess(数组式访问)接口

1ArrayAccess(数组式访问)接口

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-07-29 08:58:05
Original
1027 Leute haben es durchsucht

如果想让对象使用起来像一个PHP数组,那么我们需要实现ArrayAccess接口。

ArrayAccess是一个interface,实现这个interface,必须要实现以下几个方法:
1ArrayAccess(数组式访问)接口

<code><span><span>interface</span><span>ArrayAccess</span>
{</span><span>//标示一个元素是否定义</span><span>public</span><span><span>function</span><span>offsetExists</span><span>(<span>$offset</span>)</span>;</span><span>//返回一个元素值</span><span>public</span><span><span>function</span><span>offsetGet</span><span>(<span>$offset</span>)</span>;</span><span>//为一个元素赋值</span><span>public</span><span><span>function</span><span>offsetSet</span><span>(<span>$offset</span>,<span>$value</span>)</span>;</span><span>//删除一个元素值</span><span>public</span><span><span>function</span><span>offsetUnset</span><span>(<span>$offset</span>)</span>;</span>
}</code>
Nach dem Login kopieren

实现:

<code><span><span>class</span><span>Test</span><span>implements</span><span>ArrayAccess</span>
{</span><span>private</span><span>$elements</span> = <span>array</span>();

    <span>//标示一个元素是否定义</span><span>public</span><span><span>function</span><span>offsetExists</span><span>(<span>$offset</span>)</span>
    {</span><span>return</span><span>isset</span>(<span>$this</span>->elements[<span>$offset</span>]);
    }

    <span>//返回一个元素值</span><span>public</span><span><span>function</span><span>offsetGet</span><span>(<span>$offset</span>)</span>
    {</span><span>return</span><span>$this</span>->elements[<span>$offset</span>];
    }

    <span>//为一个元素赋值</span><span>public</span><span><span>function</span><span>offsetSet</span><span>(<span>$offset</span>,<span>$value</span>)</span>
    {</span><span>$this</span>->elements[<span>$offset</span>] = <span>$value</span>;
    }

    <span>//删除一个元素值</span><span>public</span><span><span>function</span><span>offsetUnset</span><span>(<span>$offset</span>)</span>
    {</span><span>unset</span>(<span>$this</span>->elements[<span>$offset</span>]);
    }
}

<span>$test</span> = <span>new</span> Test();
<span>$test</span>[<span>'test'</span>] = <span>'test'</span>;<span>//自动调用offsetSet</span><span>if</span>(<span>isset</span>(<span>$test</span>[<span>'test'</span>]))<span>//自动调用offsetExists</span>
{
    <span>echo</span><span>$test</span>[<span>'test'</span>];<span>//自动调用offsetGet</span><span>echo</span><span>'<br>'</span>;
    <span>unset</span>(<span>$test</span>[<span>'test'</span>]);<span>//自动调用offsetUnset</span>    var_dump(<span>$test</span>[<span>'test'</span>]);
}</code>
Nach dem Login kopieren

<code><span><span>class</span><span>obj</span><span>implements</span><span>ArrayAccess</span>
{</span><span>private</span><span>$container</span> = <span>array</span>();

    <span>public</span><span><span>function</span><span>__construct</span><span>()</span>
    {</span><span>$this</span>->container = <span>array</span>(
            <span>'one'</span> => <span>1</span>,
            <span>'tow'</span> => <span>2</span>,
            <span>'three'</span> => <span>3</span>,
        );
    }

    <span>public</span><span><span>function</span><span>offsetGet</span><span>(<span>$offset</span>)</span>
    {</span><span>return</span><span>isset</span>(<span>$this</span>->container[<span>$offset</span>]) ? <span>$this</span>->container[<span>$offset</span>] : <span>null</span>;
    }

    <span>public</span><span><span>function</span><span>offsetSet</span><span>(<span>$offset</span>,<span>$value</span>)</span>
    {</span><span>if</span> (is_null(<span>$offset</span>)){
            <span>$this</span>->container = <span>$value</span>;
        }<span>else</span>{
            <span>$this</span>->container[<span>$offset</span>] = <span>$value</span>;
        }
    }

    <span>public</span><span><span>function</span><span>offsetExists</span><span>(<span>$offset</span>)</span>
    {</span><span>return</span><span>isset</span>(<span>$this</span>->container[<span>$offset</span>]);
    }

    <span>public</span><span><span>function</span><span>offsetUnset</span><span>(<span>$offset</span>)</span>
    {</span><span>unset</span>(<span>$this</span>->container[<span>$offset</span>]);
    }
}

<span>$obj</span> = <span>new</span> obj;

var_dump(<span>isset</span>(<span>$obj</span>[<span>"two"</span>])); <span>// 调用 offsetExists</span>
var_dump(<span>$obj</span>[<span>"two"</span>]); <span>//调用 offsetGet</span><span>unset</span>(<span>$obj</span>[<span>"two"</span>]); <span>//调用 offsetUnset</span>
var_dump(<span>isset</span>(<span>$obj</span>[<span>"two"</span>]));<span>// 调用 offsetExists</span><span>$obj</span>[<span>"two"</span>] = <span>"A value"</span>;  <span>// 调用 offsetSet</span>
var_dump(<span>$obj</span>[<span>"two"</span>]); <span>//调用 offsetGet</span><span>$obj</span>[] = <span>'Append 1'</span>;
<span>$obj</span>[] = <span>'Append 2'</span>;
<span>$obj</span>[] = <span>'Append 3'</span>;
print_r(<span>$obj</span>);
</code>
Nach dem Login kopieren
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了1ArrayAccess(数组式访问)接口,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage