PHP5引入了面向对象的文件包装器 SplFileObject 。我想我刚刚发现为什么几乎没有人使用它。它纯粹是面向行的,没有fread()方法 - 相应的frwite似乎暗示了这一点。
所以现在我想知道我是否可以扩展它。但我不确定什么是更好的解决方法。将文件指针($ fp)折叠起来时,SplFileObject并不是特别有用 - 它可以是私有属性,也可以是ZE内部资源。那么我如何扩展它以获得一个fread方法?
我会选择fgets解决方案循环,但听起来既麻烦又缓慢,并提供更多潜在的陷阱。 OTOH打开辅助文件指针似乎也不是一个好方法,也需要自定义析构函数。
答案 0 :(得分:5)
您可以调用扩展它并添加一个fread
方法,该方法重复调用fgetc
方法,所需的次数。
那就是说,我同意这是一个奇怪的限制。提交feature request。如果我没有遗漏某些东西,那么应该实施fread
方法。
答案 1 :(得分:2)
PHP5.6中添加的功能
。添加了功能#65545(SplFileObject :: fread())(Tjerk)