Ответ 1
SPL означает стандартную библиотеку PHP.
SplFileObject
использует внутренний ресурс потока, созданный с помощью fopen
. Итак, ваш вопрос должен быть, когда интересно использовать SplFileObject
или напрямую работать с ресурсом потока?
SplFileObject
профи:
-
SplFileObject
обеспечивают подход к управлению файлом OOP (fread
был добавлен в PHP 5.5.11,fputcsv
был добавлен в PHP 5.4). -
SplFileObject
реализует несколько полезных интерфейсов PHP, чтобы использовать другой SPL Iterator для лучшего управления вашим файлом.
SplFileObject
Основной недостаток заключается в том, что он не дает доступа к его
внутренний ресурс потока. Первоначально функции PHP были созданы для непосредственной работы с ресурсом потока. Тот факт, что SplFileObject
не дает доступа к собственному внутреннему ресурсу потока, делает его непригодным для использования со многими встроенными функциями PHP:
-
Фильтры php-потоков плохо работают с
SplFileObject
. Вы должны полагаться на метатекуphp://filter
, которая ограничивает их полезность. -
использование
SplFileObject
сcURL
невозможно
Подводя итог SplFileObject
, и ресурс потока не являются взаимозаменяемыми. Все, что сделано с помощью SplFileObject
, может быть достигнуто с использованием ресурса потока и реализации пользовательской среды SplFileObject
, но обратное неверно.
Таким образом, в зависимости от варианта использования ресурса потока, созданного fopen
, может быть лучшим выбором, чем полагаться на SplFileObject
.
Что касается метода close, вам не нужен один... вам просто нужно установить для обработчика значение null, чтобы освободить/закрыть ресурс внутреннего потока.
$file = new SplFileObject('/path/to/my/file'); //the file handler is created
$file = null; //the file handler is closed