PHP预定义接口中 ArrayAccess 数组式访问接口

<?php
class  obj  implements  arrayaccess
{
    private  $container  = array();

    public function  __construct () {
         $this -> container  = array(
             "one"    =>  1 ,
             "two"    =>  2 ,
             "three"  =>  3 ,
        );
    }

    public function  offsetSet ( $offset ,  $value )
    {
        echo ‘把对象当数组一样赋值的时候执行,此方法‘;
        if ( is_null ( $offset ))
        {
             $this -> container [] =  $value ;
        }
        else
       {
             $this -> container [ $offset ] =  $value ;
        }
    }

    public function  offsetExists ( $offset )
    {
        echo ‘把对象当数组一样检测是否定义的时候执行,此方法‘;

        return isset( $this -> container [ $offset ]);
    }

    public function  offsetUnset ( $offset )
    {
        echo ‘把对象当数组一样删除元素的时候执行,此方法‘;
        unset( $this -> container [ $offset ]);
    }

    public function  offsetGet ( $offset )
    {
         echo ‘把对象当数组一样获取某元素的时候执行,此方法‘;
        return isset( $this -> container [ $offset ]) ?  $this -> container [ $offset ] :  null ;
    }
}

$obj  = new  obj ;

var_dump (isset( $obj [ "two" ]));

var_dump ( $obj [ "two" ]);

unset( $obj [ "two" ]);

var_dump (isset( $obj [ "two" ]));

$obj [ "two" ] =  "A value" ;

var_dump ( $obj [ "two" ]);

$obj [‘a‘] =  ‘Append 1‘ ;
$obj [‘b‘] =  ‘Append 2‘ ;
$obj [‘c‘] =  ‘Append 3‘ ;

print_r ( $obj );
时间: 2024-08-01 18:39:50

PHP预定义接口中 ArrayAccess 数组式访问接口的相关文章

PHP基础-PHP中预定义的超全局数组

预定义数组: 自动全局变量---超全局数组 1. 包含了来自WEB服务器,客户端,运行环境和用户输入的数据 2. 这些数组比较特别 3. 全局范围内自动生效,都可以直接使用这些数组 4. 用户不能自定义这些数组, 但这些数据操作方式又和我们自定义的数组操作方式一样 5. 在函数中直接可以使用这些数组 $_GET //经由URL请求提交至脚本的变量,表单默认提交方式和链接提交方式 $_POST //经由HTTP POST 方法提交到脚本的变量 $_REQUEST //经由GET, POST和COO

数组式访问-ArrayAccess

以前对ArrayAccess不是很熟悉,现在整理下下有关ArrayAccess相关的知识,ArrayAccess接口就是提供像访问数组一样访问对象的能力的接口. 接口内容如下: ArrayAccess { //检查一个偏移位置是否存在 abstract public boolean offsetExists ( mixed $offset ); //获取一个偏移位置的值 abstract public mixed offsetGet ( mixed $offset ); //设置一个偏移位置的值

PHP中预定义的超全局数组

我们先来了解一下什么是超全局数组: 自动全局变量----超全局数组 1.包含了来自web服务器,客户端,运行环境和用户输入的数据 2.这些数组是特别的 3.全局范围内自动生效,都可以直接使用这些数组,前面无需加global 4.用户不能自定义这些数组 接下来我们看看有哪些超全局数组: $_GET:由URL请求提交至脚本的变量 $_POST:由HTTP POST 方法提交到脚本的变量 $_REQUEST:由GET.POST.COOKIE机制提交到脚本的变量,因此该数组并不值得信任,尽量不去使用 $

ArrayAccess(数组式访问)接口

接口摘要  ArrayAccess { /* 方法 */ abstract public boolean offsetExists ( mixed $offset ) abstract public mixed offsetGet ( mixed $offset ) abstract public void offsetSet ( mixed $offset , mixed $value ) abstract public void offsetUnset ( mixed $offset ) }

复习PHP-语言参考-预定义接口

1.Traversable 他是一个遍历接口规范 注意:发现一个有用的函数get_declared_classes,可以以数组形式显示当前脚本下所有已经定义的类名 2.Iterator Iterator迭代器继承自Traversable,是一种遍历对象内容的对象. 你可以自己写一个子类继承自它,并写上具体遍历的方法. Iterator包含:current(返回当前元素),key(当前键),next(下一个元素),rewind(返回至初始元素),valid(检测当前元素是否存在)五种方法. 3.I

PHP预定义接口之 ArrayAccess

最近这段时间回家过年了,博客也没有更新,感觉少学习了好多东西,也错失了好多的学习机会,就像大家在春节抢红包时常说的一句话:一不留神错过了好几亿.废话少说,这篇博客给大家说说关于PHP预定义接口中常用到的重量级人物: ArrayAccess.大家也许会问,最基本.最常用的预定义接口有6个呢,为啥非得说这个.从日常的使用情况来看:这个出现的频率非常高,特别是在框架中,比如Laravel.Slim等都会用到,并且用得非常经典,让人佩服啊.从技术上说:说实话其他的我用的少啊!只是知道简单的用法,对他的理

预定义接口

迭代器:可在内部迭代自己的外部迭代器或类的接口. Iterator::current/key/next/rewind/valid. 用foreach调用迭代器方法时的顺序: 聚合式迭代器:创建外部迭代器的接口. 数组式访问: ArrayAccess::offsetExists 检测一个偏移位置是否存在 ArrayAccess::offsetGet 获取一个偏移位置的值 ArrayAccess::offsetSet 设置一个偏移位置的值 ArrayAccess::offsetUnset 复位一个偏

php学习笔记 [预定义数组(超全局数组)]

<?php  预定义数组: * 自动全局变量---超全局数组 * * 1.包含了来自WEB服务器,客户端,运行环境和用户输入的数据 * 2.这些数组比较特别 * 3.全局范围内自动生效,都可以直接使用这些数组 * 4.用户不能自定义这些数组,但这些数组的操作方式和自己定义的数组操作的方式一样 * 5.在函数中直接可以使用这些数组 * * $_GET //经由URL请求提交至脚本的变量 * $_POST //经由HTTP POST 方法提交到脚本的变量 * $_REQUEST //经由GET ,

10.23上午 PHP数组(数组正则表达式、数组、预定义数组)

正则表达式 1.替换 $s = "hello5world"; $s = preg_replace("/\d/","#",$s); echo $s;//输出结果为hello#world,数字被替换成了#. //第一个数字是被替换的内容,"/\d/"表示正则表达式的数字.//第二个参数是要用什么来替换.//第三个参数是要操作的数组. 2.拆分 //$s = "hello5world"; //$attr = pr