欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

1ArrayAccess(数组式访问)接口

程序员文章站 2022-03-16 22:32:41
...
如果想让对象使用起来像一个PHP数组,那么我们需要实现ArrayAccess接口。

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

interfaceArrayAccess
{//标示一个元素是否定义publicfunctionoffsetExists($offset);//返回一个元素值publicfunctionoffsetGet($offset);//为一个元素赋值publicfunctionoffsetSet($offset,$value);//删除一个元素值publicfunctionoffsetUnset($offset);
}

实现:

classTestimplementsArrayAccess
{private$elements = array();

    //标示一个元素是否定义publicfunctionoffsetExists($offset)
    {returnisset($this->elements[$offset]);
    }

    //返回一个元素值publicfunctionoffsetGet($offset)
    {return$this->elements[$offset];
    }

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

    //删除一个元素值publicfunctionoffsetUnset($offset)
    {unset($this->elements[$offset]);
    }
}

$test = new Test();
$test['test'] = 'test';//自动调用offsetSetif(isset($test['test']))//自动调用offsetExists
{
    echo$test['test'];//自动调用offsetGetecho'
'
; unset($test['test']);//自动调用offsetUnset var_dump($test['test']); }

classobjimplementsArrayAccess
{private$container = array();

    publicfunction__construct()
    {$this->container = array(
            'one' => 1,
            'tow' => 2,
            'three' => 3,
        );
    }

    publicfunctionoffsetGet($offset)
    {returnisset($this->container[$offset]) ? $this->container[$offset] : null;
    }

    publicfunctionoffsetSet($offset,$value)
    {if (is_null($offset)){
            $this->container = $value;
        }else{
            $this->container[$offset] = $value;
        }
    }

    publicfunctionoffsetExists($offset)
    {returnisset($this->container[$offset]);
    }

    publicfunctionoffsetUnset($offset)
    {unset($this->container[$offset]);
    }
}

$obj = new obj;

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

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