1ArrayAccess (array access) interface

WBOY
Release: 2016-07-29 08:58:05
Original
998 people have browsed it

If you want the object to be used like a PHP array, then we need to implement the ArrayAccess interface.

ArrayAccess is an interface. To implement this interface, you must implement the following methods:
1ArrayAccess (array access) interface

<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>
Copy after login

implementation:

<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>
Copy after login

<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>
Copy after login
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

The above introduces the 1ArrayAccess (array access) interface, including aspects of the content. I hope it will be helpful to friends who are interested in PHP tutorials.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template