PHP的ArrayAccess接口介绍

在 PHP5 中多了一系列新接口。在 HaoHappy 翻译的你可以了解到他们的应用。同时这些接口和一些实现的 Class 被归为 Standard PHP Library(SPL)。在 PHP5 中加入了很多特性,使类的重载 (Overloading) 得到进一步的加强。ArrayAccess 的作用是使你的 Class 看起来像一个数组(PHP 的数组)。这点和 C# 的 Index 特性很相似。

下面是 ArrayAccess 的定义:

interface ArrayAccess

  • boolean offsetExists($index)
  • mixed offsetGet($index)
  • void offsetSet($index, $newvalue)
  • void offsetUnset($index)

由于PHP的数组的强大,很多人在写 PHP 应用的时候经常将配置信息保存在一个数组里。于是可能在代码中到处都是 global。我们换种方式?

class Configuration implements ArrayAccess {

    static private $config;
    private $configarray;

    private function __construct() {
        // init
        $this->configarray = array("Binzy" => "Male", "Jasmin" => "Female");
    }

    public static function instance() {
        //
        if (self::$config == null) {
            self::$config = new Configuration();
        }
        return self::$config;
    }
    //检查一个偏移位置是否存在
    function offsetExists($index) {
        return isset($this->configarray[$index]);
    }
    //获取一个偏移位置的值
    function offsetGet($index) {
        return $this->configarray[$index];
    }
    //设置一个偏移位置的值
    function offsetSet($index, $newvalue) {
        $this->configarray[$index] = $newvalue;
    }
    //复位一个偏移位置的值
    function offsetUnset($index) {
        unset($this->configarray[$index]);
    }

}

$config = Configuration::instance();
print_r($config);
echo "<br/>";
echo $config[‘Binzy‘];
echo "<br/>";
$config[‘Binzy‘] = ‘1222‘;
echo $config[‘Binzy‘];
时间: 2024-10-08 02:32:38

PHP的ArrayAccess接口介绍的相关文章

SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)

SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK).串行数据输出(SDO).串行数据输入(SDI).SPI总线可以实现多个SPI设备互相连接.提供SPI串行时钟的SPI

Hive 接口介绍(Web UI/JDBC)

Hive 接口介绍(Web UI/JDBC) 实验简介 本次实验学习 Hive 的两种接口:Web UI 以及 JDBC. 一.实验环境说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序: XfceTerminal: Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令: Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写

Spring的BeanPostProcesser接口介绍

前言 废话不多说,直接进入主题. 同学们有想过这么一种情况吗:Spring容器提供给我们的一些接口实现类并不能满足我们的要求,但是我们又不想重新写一个类,只想在原来类上修改一些属性? 举个例子,SpringMVC中通过<mvc:annotation-driven>标签自动生成的RequestMappingHandlerAdapter有个HandlerMethodArgumentResolverComposite类型的argumentResolvers属性,这个属性内部有个HandlerMeth

核心开发接口介绍

核心开发接口介绍1.hibernate_0500_CoreAPI2.HiberanteAPI 文档需要单独下载 在线api链接:http://docs.jboss.org/hibernate/core/3.3/api3.Configuration a) AnnotationConfiguration b) 进行配置信息的管理 c) 用来产生 SessionFactory d) 可以在 configure方法中指定hibernate配置文件 e) 只需关注一个方法即:buildSessionFac

微信公众平台开发(一)---接口介绍及配置

一.公众平台开发接口介绍 公众平台是为微信用户提供服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号.获取接口权限后,可以通过阅读本接口文档来帮助开发. 公众平台开发接口提供与用户进行消息交互.自定义菜单交互的能力.对于成功接入公众平台开发接口的公众账号,当用户发消息给公众号,微信公众平台服务器会使用http请求对接入的网址进行消息推送,第三方服务器可通过响应包回复特定结构,从而达到回复消息的目的. 二.注册微信平台公众帐号  (1)注册地址:https://mp

群发软件/推广软件接口介绍

一.接口介绍: 1. /** * 代表本系统需要开发的网站的基本操作,比如注册.登录.发布等这些一般需要开发的操作. * 除了本接口还有有一些辅助接口,比如{@link InteractAble},他们的共同目的都是为了 完善网站需要的操作. * <p> * 实现该接口,系统将会在你在表现层上触发相应事件的时候调用本接口的相应方法, 比如你点击了<i>注册</i> * 按钮后,将会触发{@code register()}方法. * * @author ocq * @si

【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍

原文:[百度地图API]如何在地图上添加标注?--另有:坐标拾取工具+打车费用接口介绍 摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. ------------------------------------------------------------------------------------------------------- 哇,好久没有上来了.主要是因为最近工作繁忙,加上休息时间被各种排练.社团活动占满,导致木有更新此博客.

MII接口介绍(转)

1.简介 MII (Media Independent Interface(介质无关接口)或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准.它包括一个数据接口和一个MAC和PHY之间的管理接口."媒体独立"表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作.MII接口的类型有很多,常用的有MII.RMII.SMII.SSMII.SSSMII.GMII.RGMII.SGMII,下面对它们进行一一介绍. 2.MII接口介绍   MII接口一共有1

JDBC接口介绍之Statement

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. Statement: 1.介绍:对数据库数据一系列的操作依赖于SQL语句,而Statement接口是用来执行SQL语句的,Statement对象需要通过Connection类里面的createStatement()方法进行创建.如下图: 先创建一个连接数据库的类,以后就不用再写这片代码了,直接调用此类里面的方法即可: 创建Statement对象: 2.执行S