Re: [SMARTY-DEV] Found some incompatibilities

From: Date: Wed, 03 Mar 2004 19:25:45 +0000
Subject: Re: [SMARTY-DEV] Found some incompatibilities
References: 1 2  Groups: php.smarty.dev 
Request: Send a blank email to php-smarty-dev+get-2181@lists.php.net to get a copy of this message
On Wed, Mar 03, 2004 at 10:39:56AM +0100, Jan Rosier wrote: > >> On another note: While I looked at _read_file() I noticed that it > >> provides functionality to read only sub-parts of a file (only $n..$m > >> lines). But this functionality is never used from withing Smarty. We > >> could save about 20 lines in core Smarty.class.php if we abandon this > >> unused feature. > > > > Personally, I'd vote to remove those unused lines. > > > > Me too and when we add the following code. The whole function > _read_file(...) could be replaced with file_get_contents($file) > > > if (!function_exists('file_get_contents')) { > /** > * Reads entire file into a string > * PHP 4 >= 4.3.0 > * > * @param string $file > * > * @return string > */ > function file_get_contents($file) > { > if ($filesize = filesize($file) AND $handle = fopen($file, 'r')) { > $content = fread($handle, $filesize); > fclose($handle); > return $content; > } else { > return ''; > } > } > } > > > Just my 2 euro cents ;-) > > Jan Rosier I like that approach. We should return boolean false if the fopen fails, though (as the native file_get_contents() does). There are just two things that make me feel uncomfortable: #1 _read_file() locks the file with LOCK_SH before reading. I don't know if there are any negative side-effects if we replace this by file_get_contents (which doesn't lock AFAIK). I don't know of any dependency inside smarty on this shared lock: It doesn't work Windows anyway and _write_file() works with writing to a temp-file and an "transactional" rename() command so it doesn't need a lock. But I'm not 100% sure if the lock is beneficial somewhere. #2 we should also change fread() in Config_File.class.php to file_get_contents() if we go for this approach. Config_File is known to be usable outside of Smarty. If smarty defines it's own file_get_contents() for older php-versions, than Config_File would break without Smarty and older php versions. If these 2 drawbacks are acceptable by Smarty's userbase I'm for providing a function like the above in Smarty.class.php and let Smarty move to 4.3.0's file_get_contents().

« previous php.smarty.dev (#2181) next »