Re: SplFileObject Countable

From: Date: Tue, 15 Mar 2011 10:54:14 +0000
Subject: Re: SplFileObject Countable
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-51695@lists.php.net to get a copy of this message
On 15/03/11 10:01, Peter Cowburn wrote:
For countBytes() how is that different from SplFileInfo's getSize() ? As for countWords() and the others, I think this crosses the line (in my view) over what a "File Object" should provide.
Hi Peter & Sebastian, Bah. It isn't. Obviously that was going to exist already, but was thinking about methods looking like countXXXXX() too much :) Perhaps you are right, Peter, on your opinions about what a "file object" should provide. I would think, in that case, that a getLineCount() shouldn't exist on the "file object" either. Currently we have:
    SplFileInfo  -- information/metadata about a file.
         |
         V
SplFileObject -- modify/access contents of a file. It could make sense to subclass this to provide methods for accessing information about the contents of a file. As for a name, I'm not sure what would be best, but perhaps something like "SplFileData". Maybe someone else can come up with a better name? Then you could have the following methods: getByteCount() -- the same as getSize(), but for here for consistency. getCharCount() getLineCount() getWordCount() getLongestLine() Another consideration is how these should behave if we have a binary file - am not sure what GNU wc does, but perhaps that is a starting point for deciding what should happen. Also thought might be given to what other useful methods could be provided for getting information about the contents of a file. Some ideas (sensible or otherwise!): getShortestLine() getEolFormat() setEolFormat() -- allow switching between LF, CR and CRLF.
getLineIndent() -- Could return '\t', '  ', '    ', etc.
setLineIndent() hasEmptyLines() hasTrailingWhiteSpace() ... It may also make sense to cache the result while the file is not modified as some of these operations could be expensive. Anyway - I'll stop rambling. I think this would be better than just hacking in a method for the sake of it. Cheers, Nick

« previous php.internals (#51695) next »