php spl(standard PHP library)认知

PHP admin 410℃ 0评论

关于PHP SPL可能多年的PHPER并没有深入研究,这里我也只是举几个例子,详细的示例大家参考文章后面阮一峰的博客

spl类查看:

foreach(spl_classes() as $key=>$val){
    echo $key, '=>' , $val, '<br>';
}

 

基础迭代器:

Iterator, 需要实现五个方法:

next()

valid()

key()

current()

rewind()

只要是满足了标准库的接口标准,那么此对象即可以像数组(php数组)一样用foreach进行迭代

其它数组迭代器:

class A implements ArrayAccess, IteratorAggregate{
    public $name = '';
    public $age;
    public $sex;

    function __construct($name = 'tony', $age, $sex){
        $this->name = $name;
        $this->age = $age;
        $this->sex = $sex;
    }

    function offsetSet($key, $value){
        if(array_key_exists($key, get_object_vars($this))){
            $this->{$key} = $value;
        }
    }

    function offsetGet($key){
        if(array_key_exists($key, get_object_vars($this))){
            return $this->{$key};
        }
    }

    function offsetUnset($key){
        if(array_key_exists($key, get_object_vars($this))){
            unset($this->{$key});
        }
    }

    function offsetExists($key){
        return array_key_exists($key, get_object_vars($this));
    }

    function getIterator(){
        return new ArrayIterator($this);
    }
}

$a = new A('A1', 19, 'girl');

foreach($a as $key=>$val){
    echo $key, $val;echo '<br>';
}

echo sizeof($a->getIterator());
exit;
var_dump($a);
echo '<br>';

$a['name'] = 'a1 son';
var_dump($a);
echo '<br>';

echo $a['name'];
echo '<br>';

unset($a['sex']);
var_dump($a);
echo '<br>';

 

目录迭代器:DirectoryIterator

foreach(new DirectoryIterator('./') as $f){
    if($f->getFilename() == 'b.php'){
        var_dump($f->getFilename());echo '<br>';
    }
}

exit;
try{
    $dir = './test';
    foreach(new DirectoryIterator($dir) as $f){
        echo $f, '<br>';
    }
} 
catch(Exception $e){
    echo 'No file found!';
}
exit;

 

参考链接:

阮一峰的博客

PHP SPL标准库

转载请注明:朋克网 » php spl(standard PHP library)认知

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址