使用fread方法扩展SplFileObject

mar*_*rio 3 php

PHP5引入了面向对象的文件包装器SplFileObject.我想我刚刚发现为什么几乎没有人使用它.它纯粹是面向行的,没有fread()方法 - 相应的frwite似乎暗示了这一点.

所以现在我想知道我是否可以扩展它.但我不确定什么是更好的解决方法.将文件指针($ fp)折叠起来时,SplFileObject并不是特别有用 - 它可以是私有属性,也可以是ZE内部资源.那么我如何扩展它以获得一个fread方法呢?

  • 使用fgets()将 fread()实现为字符串收集循环,如果仅请求特定大小,则最终搜索,并且fgets读取太长,直到下一个\n换行.
  • 使用自定义构造函数,它会再次打开文件并存储辅助文件指针,以防我想调用fread()而不是父类方法.

我会选择fgets解决方案循环,但听起来既麻烦又缓慢,并提供更多潜在的陷阱.OTOH打开辅助文件指针似乎也不是一个好方法,也需要自定义析构函数.

Art*_*cto 5

您可以调用extend it并添加一个重复fread调用该fgetc方法的方法,即所需的次数.

也就是说,我同意这是一个奇怪的限制.提交功能请求.如果我没有遗漏某些东西,那么fread方法应该被实施.