zoukankan      html  css  js  c++  java
  • PHP几个接品 ArrayAccess, Iterator Countable 简单

    echo "PHP几个接品 ArrayAccess, Iterator Countable<BR><BR>";
    echo "<h1>Countable</h1>";
    /*abstract public int count(void)
    {
    }*/
    class MyCounter implements Countable
    {
    	function count()
    	{
    		static $count = 0;
    		return ++$count;
    	}
    	public function count2()
    	{
    		static $count2 = 0;
    		return ++$count2;
    	}
    }
    
    $count = new MyCounter();
    for($i=0; $i<6; $i++)
    {
    	echo "\n this counter is :".count($count)."<BR>";
    	//echo "\n this counter is :".count($count2)."<BR>";
    }
    //实现对类的count,但实际的用处并不是很清楚,其实意思也不太明白了,
    //莫法上网莫法查啊
    echo "<h1>ArrayAccess</h1>";
    /*ArrayAccess
    {
    	abstract public boolean offsetExists (string $offset);
    	abstract public mixed offsetGet(string $offset);
    	abstract public void offsetSet(string $offset, string $value);
    	abstract public void offsetUnset(string $offset);
    }*/
    class obj implements ArrayAccess
    {
    	private $contain = array();
    
    	function __construct()
    	{
    		$this->contain = array('gao'=>'gao','song'=>'song');
    	}
    
    	
    	function __destruct()
    	{
    		unset($this->contain);
    	}
    
    	public function offsetExists($offset)
    	{
    		return isset($this->contain[$offset]) ? TRUE:FALSE;
    	}
    
    	public function offsetGet($offset)
    	{
            return isset($this->contain[$offset]) ? $this->contain[$offset] : null;
    	}
    
    	public function offsetSet($offset,$value)
    	{
            $this->contain[$offset] = $value;
    	}
    
    	public function offsetUnset($offset)
    	{
    		unset($this->contain[$offset]);
    	}
    }
    
    $obj = new obj();
    $obj['name'] = 'xlc';
    $obj['sex'] = '男';
    echo $obj['name']." ".$obj['sex'];
    echo "<BR><BR>";
    //实现对类的取值赋值等操作
    
    echo "<h1>Iterator</h1>";
    //Traversable{}
    /*Iterator extends Traversable
    {
    	abstract public mixed current(void);
    	abstract public scalar key(void);
    	abstract public void next(void);
    	abstract public void rewind(void);
    	abstract public boolean valid(void);
    }*/
    class MyIterator implements Iterator
    {
    	private $index = 0;
    	private $configtion = array('one','two','three');
    
    	function __construct()
    	{
    		$this->index = 0;
    	}
    
    	function __destruct()
    	{
    		unset($this->configtion);
    	}
    
    	public function current()
    	{
    		return $this->configtion[$this->index];
    	}
    
    	public function key()
    	{
    		return $this->index;
    	}
    
    	public function next()
    	{
    		return ++$this->index;
    	}
    
    	public function rewind()
    	{
    		$this->index = 0;
    	}
    
    	public function valid()
    	{
    		return isset($this->configtion[$this->index]) ? TRUE : FALSE;
    	}
    }
    
    $it = new MyIterator();
    foreach($it as $key=>$val)
    {
        echo "\n======{$key}===={$val}<BR>";
    }
    $it->rewind();
    echo $it->key();
    echo $it->current();
    

      

  • 相关阅读:
    ZKW费用流修正
    BZOJ 1060 [ZJOI2007]时态同步
    BZOJ 1059 [ZJOI2007]矩阵游戏
    腾讯WEB前端开发面试经历,一面二面HR面,面面不到!
    亲历腾讯WEB前端开发三轮面试经历及面试题
    2015大型互联网公司校招都开始了,薪资你准备好了嘛?
    10款最好的 Bootstrap 3.0 免费主题和模板
    python3之urllib基础
    python3下应用requests
    python心得二(编码问题)
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/3055642.html
Copyright © 2011-2022 走看看