摘要:递归一: 1 function tree($table,$p_id=0) { 2 $tree = array(); 3 foreach($table as $row){ 4 if($row['parent_id']==$p_id){ 5 $tmp = tree($table,$row['id']); 6 if($tmp){ 7 $row['children']=$tmp; 8 }else{ 9 ...
阅读全文
文章分类 - PHP-SPL
摘要:SplFileInfo类的作用在于为文件或者目录的属性提供面向对象的访问功能,其典型应用是获取文件或者文件夹的信息。SplFileInfo类提供了两个关键的方法以支持对它的扩展:1. setInfoClass:这个函数默认指向SplFileInfo类,如果扩展了SplFileInfo类,应该将这个值设置为扩展类的名称。2. setFileClass:这个函数默认执行一个SplFileObject类,如果扩展了这个类,应该设置这个值以确保扩展类正式调用SplFileInfo类的代码提供的类。这两个方法对getFileInfo()、getPathInfo()和openFile()等方法的操作会产生
阅读全文
摘要:介绍ArrayAccess接口是PHP5中新添加的一个接口,其功能是使类可以像PHP中的数组一样操作。有点类似于.net平台的index操作。其接口很简单,就四个函数:interface ArrayAccess{ public function offsetGet($index); public function offsetSet($index, $value); public function offsetExists($index); public function offsetUnset($index);}offsetGet是数组的取值操作;offsetSet是数组的赋值操作;...
阅读全文
摘要:介绍迭代器这种设计模式很常见,也很实用。最著名的要算是C++中STL的实现了。它提供了一个统一的接口,使用访问者在不知道类对象内部数据结构的情况下遍历其内部数据。PHP5中提供了对这种设计模式的内置支持,其实所谓的内置支持就是可以使用foreach语言结构来访问实现迭代器接口的类。一个简单的自定义迭代器首先看一下下面这三段代码:$array = array('a', 'b', 'c');while($a = next($array)){ // do something}$dh = opendir('/home/test/files'
阅读全文