频道栏目
首页 > 资讯 > WinSql > 正文

PHPSPL,StandardPHPlibrary

16-01-08        来源:[db:作者]  
收藏   我要投稿

StandardPHPlibrary Module (SPL标准库) 关于SPL的产生可以参考php源码包内的ext下的spl SPL分为几大类1. Iterators : SPL offers some advanced iterator algorithms。迭代器: SPL 提供了一些高级的迭代器运算法则。 2. Directories and Files : SPL offers two advanced directory and file handling classes:目录和文件:SPL提供了两个高级路径和文件处理类。 3. XML : SPL offers an advanced XML handling class:XML : SPL提供了一个高级XML处理类。 4. Array Overloading : SPL offers advanced Array overloading:数组重载 :SPL提供了高级数组重载。 5. Counting : interface Countable allows to hook into the standard array function count().计数:接口Countable 允许勾住标准数组方法count(). 6. Exceptions : SPL provides a set of standard Exception classes each meant to indicate a certain problem type. 异常:SPL规定了一套标准异常类,每个类都标识了一类确定的问题。 7. Observer: SPL suggests a standard way of implementing the observer pattern.观察者:SPL提出了实现观察者模式的标准。 简单的来说这些都是object,都是php已经封装好的为了方便某些功能的类,相当符合面向对象... 一些例子: 得到SPL相关类的方法 DirectorIterator ArrayObject ArrayIterator Recursive Array Iterator PDO & IteratorIterator FilterIterator XML & RecursiveIteratorIterator SimpleXMLIterator LimitIterator & ArrayIterator SPLFileObject 得到SPL相关类的方法 <?php foreach(get_class_methods(new DirectoryIterator('./')) as $key=>$method) { echo $key.' -> '.$method.'<br />'; } ?> DirectoryIterator <?php try{ /*** class create new DirectoryIterator Object ***/ foreach ( new DirectoryIterator('./') as $Item ) { echo $Item.'<br />'; } } /*** if an exception is thrown, catch it here ***/ catch(Exception $e){ echo 'No files Found!<br />'; } ?> ArrayObject <?php /*** a simple array ***/ $array = array('koala', 'kangaroo', 'wombat', 'wallaby', 'emu', 'kiwi', 'kookaburra', 'platypus');

/*** create the array object ***/ $arrayObj = new ArrayObject($array);

/*** iterate over the array ***/ for($iterator = $arrayObj->getIterator(); /*** check if valid ***/ $iterator->valid(); /*** move to the next array member ***/ $iterator->next()) { /*** output the key and current array value ***/ echo $iterator->key() . ' => ' . $iterator->current() . '<br />'; } ?>ArrayIterator <?php /*** a simple array ***/ $array = array('koala', 'kangaroo', 'wombat', 'wallaby', 'emu', 'kiwi', 'kookaburra', 'platypus');

try { /*** create a new object ***/ $object = new ArrayIterator($array); /*** rewind to the beginning of the array ***/ $object->rewind(); /*** check for valid member ***/ while($object->valid()) { /*** echo the key and current value ***/ echo $object->key().' -&gt; '.$object->current().'<br />'; /*** hop to the next array member ***/ $object->next(); } } catch (Exception $e) { echo $e->getMessage(); } ?>

<?php $array = array( array('name'=>'butch', 'sex'=>'m', 'breed'=>'boxer'), array('name'=>'fido', 'sex'=>'m', 'breed'=>'doberman'), array('name'=>'girly','sex'=>'f', 'breed'=>'poodle') );

foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $key=>$value) { echo $key.' -- '.$value.'<br />'; } ?> PDO & IteratorIterator <?php // check for errors error_reporting(E_ALL);

try { $dsn = new PDO("sqlite2:/home/kevin/html/periodic.sdb");

// the result only implements Traversable $stmt = $dsn->prepare('SELECT * FROM periodic ORDER BY atomicnumber');

// exceute the query $stmt->execute();

// the result should be an instance of PDOStatement // IteratorIterator converts it and after that you can do any iterator operation with it // The iterator will fetch the results for us. $it = new IteratorIterator($stmt);

// the iterator object now has 5 arrays within. // Each array contains a result set from the db query foreach($it as $row) { // create the array object $arrayObj = new ArrayObject($row); // iterate over the array for($iterator = $arrayObj->getIterator(); // check if valid $iterator->valid(); // move to the next array member $iterator->next()) { // output the key and current array value echo $iterator->current() . '<br />'; } echo '<hr />'; } $dsn = null; } catch (PDOException $e) { print"Error!:". $e->getMessage() ."<br />"; } ?> FilterIterator <?php /*** a simple array ***/ $animals = array('koala', 'kangaroo', 'wombat', 'wallaby', 'emu', 'NZ'=>'kiwi', 'kookaburra', 'platypus');

class CullingIterator extends FilterIterator{

/*** The filteriterator takes a iterator as param: ***/ public function __construct( Iterator $it ){ parent::__construct( $it ); }

/*** check if key is numeric ***/ function accept(){ return is_numeric($this->key()); }

}/*** end of class ***/ $cull = new CullingIterator(new ArrayIterator($animals));

foreach($cull as $key=>$value) { echo $key.' == '.$value.'<br />'; } ?> XML & RecursiveIteratorIterator <?php /*** a simple xml tree ***/ $xmlstring = <<<XML <?xml version ="1.0"encoding="UTF-8"standalone="yes"?> <document> <animal> <category id="26"> <species>Phascolarctidae</species> <type>koala</type> <name>Bruce</name> </category> </animal> <animal> <category id="27"> <species>macropod</species> <type>kangaroo</type> <name>Bruce</name> </category> </animal> <animal> <category id="28"> <species>diprotodon</species> <type>wombat</type> <name>Bruce</name> </category> </animal> <animal> <category id="31"> <species>macropod</species> <type>wallaby</type> <name>Bruce</name> </category> </animal> <animal> <category id="21"> <species>dromaius</species> <type>emu</type> <name>Bruce</name> </category> </animal> <animal> <category id="22"> <species>Apteryx</species> <type>kiwi</type> <name>Troy</name> </category> </animal> <animal> <category id="23"> <species>kingfisher</species> <type>kookaburra</type> <name>Bruce</name> </category> </animal> <animal> <category id="48"> <species>monotremes</species> <type>platypus</type> <name>Bruce</name> </category> </animal> <animal> <category id="4"> <species>arachnid</species> <type>funnel web</type> <name>Bruce</name> <legs>8</legs> </category> </animal> </document> XML;

/*** a new simpleXML iterator object ***/ try { /*** a new simple xml iterator ***/ $it = simplexml_load_string($xmlstring, 'SimpleXMLIterator'); /*** a new limitIterator object ***/ foreach(new RecursiveIteratorIterator($it, 1) as $name => $data) { echo $name.' -- '.$data.'<br />'; } } catch(Exception $e) { echo $e->getMessage(); } ?> SimpleXMLIterator <?php $xmlstring =<<<XML <?xml version ="1.0"encoding="UTF-8"standalone="yes"?> <document> <animal>koala</animal> <animal>kangaroo</animal> <animal>wombat</animal> <animal>wallaby</animal> <animal>emu</animal> <animal>kiwi</animal> <animal>kookaburra</animal> <animal>platypus</animal> <animal>funnel web</animal> </document> XML;

try { /*** a new simpleXML iterator object ***/ $sxi = new SimpleXMLIterator($xmlstring);

/*** add an attribute with a namespace ***/ $sxi->addAttribute('id:att1', 'good things', 'urn::test-foo');

/*** add an attribute without a namespace ***/ $sxi->addAttribute('att2', 'no-ns');

echo htmlentities($sxi->saveXML()); } catch(Exception $e) { echo $e->getMessage(); } ?>LimitIterator & ArrayIterator <?php /*** the offset value ***/ $offset = 3;

/*** the limit of records to show ***/ $limit = 2;

$array = array('koala', 'kangaroo', 'wombat', 'wallaby', 'emu', 'kiwi', 'kookaburra', 'platypus');

$it = new LimitIterator(new ArrayIterator($array), $offset, $limit);

foreach($it as $k=>$v) { echo $it->getPosition().'<br />'; } ?> SPLFileObject <?php try{ // create a new spl file object from a file $file = new SplFileObject("./test.log"); // check if for validity while($file->valid()) { // echo the current line echo $file->current().'<br />'; // increment the iterator $file->next(); } } catch (Exception $e) { echo $e->getMessage(); } ?>

http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

相关TAG标签
上一篇:微信JS接口汇总及使用详解
下一篇:Apache mod_negotiation模块HTML注入及HTTP响应拆分漏洞
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站