Я работаю с PHP-библиотеками CFPropertyList и, похоже, по умолчанию используются методы записи / сохранения файлов plist.
Поскольку я могу контролировать кэширование вывода, я думаю, что было бы более эффективно пропустить запись файла plist и просто отобразить его напрямую.
Как бы я изменил CFPropertyList для этого?
Вот текущая функция сохранения:
public function save($file=null,$format=null) {
$file = $file ? $file : $this->file;
$format = $format ? $format : $this->format;
if( !in_array( $format, array( self::FORMAT_BINARY, self::FORMAT_XML ) ) )
throw new PListException( "format {$format} is not supported, use CFPropertyList::FORMAT_BINARY or CFPropertyList::FORMAT_XML" );
if(!file_exists($file)) {
// dirname("file.xml") == "" and is treated as the current working directory
if(!is_writable(dirname($file))) throw IOException::notWritable($file);
}
else if(!is_writable($file)) throw IOException::notWritable($file);
$content = $format == self::FORMAT_BINARY ? $this->toBinary() : $this->toXML();
$fh = fopen($file, 'wb');
fwrite($fh,$content);
fclose($fh);
}