Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.74.88] |
|
Сообщ.
#1
,
|
|
|
Хочу перехватить вызов файлов, удаляю текущий обработчик
stream_wrapper_unregister( 'file' ); stream_wrapper_register( 'file', 'myWrapperFile' ); stream_wrapper_restore( 'file' ); file_get_contents($file); А хотелось бы сделать проще. Создать класс class myWrapperFile extends ...... { } |
Сообщ.
#2
,
|
|
|
Нету такого
|
Сообщ.
#3
,
|
|
|
им что, жалко было?....
|
Сообщ.
#4
,
|
|
|
нет особого смысла, написать свою обвязку для этого - 5 минут делов
|
Сообщ.
#5
,
|
|
|
Цитата Serafim @ я уже пол дня пыхчу....для этого - 5 минут делов ini_set('display_errors', 1); error_reporting(E_ALL); echo microtime(),'<hr>'; class my { function pre( $arr = NULL, $str = '' ) { echo '<h3>',$str,'</h3><pre>'; print_r( $arr ); echo '</pre>'; } } class myWrapperFile { static private $res = array ( ); private $f, $fobj; //streamWrapper::__construct — Создает новый объект-обертку для потока function __construct( ) { echo '<b>__construct is called</b>'; my::pre(func_get_args()); echo '<hr>'; //self::$res[ ] = new SplFileObject( 'test.ini' );/*$this -> $f = new SplFileObject( $file );*/ //return count( self::$res ) - 1; } //streamWrapper::__destruct — Уничтожает существующую обертку потока function __destruct( ) { echo '<b>__destruct is called</b>'; my::pre(func_get_args()); echo '<hr>'; } //streamWrapper::dir_closedir — Обработчик закрытия директории function dir_closedir( ) { echo '<b>dir_closedir is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::dir_opendir — Обработчик открытия директории function dir_opendir( ) { echo '<b>dir_opendir is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::dir_readdir — Обработчик чтения содержимого директории function dir_readdir( ) { echo '<b>dir_readdir is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::dir_rewinddir — Обработчик перемещения на начало директории function dir_rewinddir( ) { echo '<b>dir_rewinddir is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::mkdir — Создание директории function mkdir( ) { echo '<b>mkdir is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::rename — Переименовывает файл или директорию function rename( ) { echo '<b>rename is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::rmdir — Удаляет директорию function rmdir( ) { echo '<b>rmdir is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_cast — Получает ресурс уровнем ниже function stream_cast( ) { echo '<b>stream_cast is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_close — Закрывает ресурс function stream_close( ) { echo '<b>stream_close is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_eof — Проверяет достижение конца файла по файловому указателю function stream_eof( ) { echo '<b>stream_eof is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_flush — Сохранение данных вывода function stream_flush( ) { echo '<b>stream_flush is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_lock — Advisory file locking function stream_lock( ) { echo '<b>stream_lock is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_metadata — Изменяет настройки потока function stream_metadata( ) { echo '<b>stream_metadata is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_open — Открывает файл или URL function stream_open( $file, $rw ) { echo '<b>stream_open is called</b>'; my::pre(func_get_args()); //echo '<hr>'; //echo 'this is set = ',(isset($this)?'<b>YES</b>':'NO'),'<pre>',debug_print_backtrace(),'</pre>called by ',get_called_class(),'<hr>'; //var_dump($this); /*$f = new SplFileObject( $file ); var_dump($f);return true;/*return $f -> openFile( 'r' );*/ //return new SplFileObject( $file ); $this -> f = new SplFileInfo( $file ); //echo '<pre>';var_dump($a);echo '</pre>size=',$a->getSize(),'<hr>'; //echo '<pre>';var_dump($a->openFile());echo '</pre><hr>'; //return $a -> openFile( ); $this -> fobj = $this -> f -> openFile( ); echo '<pre>';var_dump($this -> fobj);echo '</pre><hr>'; return true; } //streamWrapper::stream_read — Читает из потока function stream_read( ) { echo '<b>stream_read is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_seek — Перемещение на заданную позицию в потоке function stream_seek( ) { echo '<b>stream_seek is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_set_option — Изменение настроек потока function stream_set_option( ) { echo '<b>stream_set_option is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_stat — Получение информации о файловом ресурсе function stream_stat( ) { echo '<b>stream_stat is called</b>'; my::pre(func_get_args()); echo 'this is setted = ',(isset($this)?'<b>YES</b>':'NO'),'<hr>'; /*$this -> stat( );return $f -> stat( );*/ return $this -> f -> fstat( ); } //streamWrapper::stream_tell — Определение текущей позиции потока function stream_tell( ) { echo '<b>stream_tell is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_truncate — Усечение потока function stream_truncate( ) { echo '<b>stream_truncate is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::stream_write — Запись в поток function stream_write( ) { echo '<b>stream_write is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::unlink — Удаление файла function unlink( ) { echo '<b>unlink is called</b>';my::pre(func_get_args());echo '<hr>'; } //streamWrapper::url_stat — Получение информации о файле function url_stat( ) { echo '<b>url_stat is called</b>'; my::pre(func_get_args()); echo 'this is setted = ',(isset($this)?'<b>YES</b>':'NO'),'<hr>'; /*return $f -> stat( );*/ //var_dump($this); return $this -> fobj -> fstat( ); } } /* $a=new SplFileInfo( 'test.ini' );// SplFileObject echo '<pre>';var_dump($a);echo '</pre>size=',$a->getSize(),'<hr>'; echo '<pre>';var_dump($a->openFile());echo '</pre><hr>'; */ stream_wrapper_unregister( 'file' ); stream_wrapper_register( 'file', 'myWrapperFile' ); //my::pre(file_get_contents( 'test.ini' )); file( 'test.ini' ); |
Сообщ.
#6
,
|
|
|
Можешь у меня подсмотреть: https://github.com/SerafimArts/Mirror/blob/...ader/Filter.php
Добавлено Про то, что приведённый тобою код не отвечает стандартам php кода я промолчу: http://getjump.me/ru-php-the-right-way/#Ру..._написанию_кода |
Сообщ.
#7
,
|
|
|
Цитата Serafim @ да, молодец! всё чистенько, акуратненько Можешь у меня подсмотреть: https://github.com/SerafimArts/Mirror/blob/...ader/Filter.php только мне нужен протокол file:// а не mirror:// |