• 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();
    

      

  • 相关阅读:
    将纸质照片转成数字报名照
    华为手机如何下载google play商店中的apk
    大疆Mavic 2发布
    [转] Spring使用Cache、整合Ehcache
    [转] spring-boot集成swagger2
    [转] Intellij IDEA快捷键与使用小技巧
    [转] 这个常识很重要,教你如何区分JEDEC 1600内存与XMP 1600内存
    [转] 下载文件旁边附的MD5/SHA256等有什么用途?
    Openresty 健康检查
    Vuforia图像追踪,动态创建的对象隐藏显示的坑
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/3055642.html
Copyright © 2020-2023  润新知