[原]RecursiveDirectoryIterator 递归目录迭代器

    PHP5开始支持了接口, 并且内置了Iterator接口, 所以如果你定义了一个类,并实现了Iterator接口,那么你的这个类对象就是ZEND_ITER_OBJECT,否则就是ZEND_ITER_PLAIN_OBJECT. 

    对于ZEND_ITER_PLAIN_OBJECT的类,foreach会通过HASH_OF获取该对象的默认属性数组,然后对该数组进行foreach.

    以上是PHP迭代器的一些描述。这里我们主要来看以下 RecursiveDirectoryIterator 这个迭代器的作用,这个东西其实还是比较有用的只是容易被大家忽略。他的主要作用就是实现递归目录扫描,返回目录中的内容。很多人一想到要扫描目录 然后就google一下,然后国内的文章基本都是粘来粘去,都一样的,用 dir  read scandir 之类的循环,并不是说不行或者不好,只是PHP给我们提供了一个更方便的方式。

    那就是 RecursiveDirectoryIterator 和 RecursiveIteratorIterator 了。他们同属于 SPL 的迭代器范围。

SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的组件和接口,并且从 PHP5.3 已逐渐的成熟。SPL 其实在所有的 PHP5 开发环境中被内置,同时无需任何设置。SPL 还提供了其他非常多的迭代器  详见: 文档

    OK,我们继续回到扫描目录的问题。其实非常简单只是大家都不知道而已,没啥高深的东西,做个示例就OK了。

Continue reading

PHP | wwpeng | | (0) |

[原]PHP服务器端上传参数限制

1.首先我们先看最常见的配置选项,php.ini 中的配置

upload_max_filesize “2M” PHP_INI_PERDIR 在 PHP <= 4.2.3 时是 PHP_INI_ALL。 

post_max_size “8M” PHP_INI_PERDIR 在 PHP <= 4.2.3 时是PHP_INI_SYSTEM。从 PHP 4.0.3 起可用。

upload_max_filesize 配置的是 上传的文件的大小限制 默认值2M.

post_max_size 配置的是 post的请求做提交的内容的最大限制,默认值8M

这也就是我们最常见的想要上传更大的文件需要修改的配置参数。post_max_size 理论上应该比 upload_max_filesize 大,因为文件上传包含在post请求当中。

2.关于.htaccess文件中的配置选项

php_value upload_max_filesize 50M  #上传文件大小限制 默认 2M

php_value post_max_size 100M         #POST 提交数据的大小限制 默认8M

.htaccess 文件配置生效的前提条件是 该站点的虚拟主机中 配置了:AllowOverride All

3.关于HTML tag中对上传文件的大小限制:

<input type=”hidden” name=”MAX_FILE_SIZE” value=”100″ />

Continue reading

PHP | wwpeng | | (0) |