Template Toolkit(русская редакция) |
|
||
|
|||
Template::Plugin::File |
|
ОБЗОР |
[ Индекс ] [ Модули ] [ Наверх ] |
[% USE File(filepath) %]
[% File.path %] # полный путь
[% File.name %] # имя файла
[% File.dir %] # каталог |
ОПИСАНИЕ |
[ Индекс ] [ Модули ] [ Наверх ] |
Этот плагин предоставляет абстракцию файла. Его можно использовать, чтобы получить из файловой системы информацию о файлах, или представлять произвольные файлы (например, при создании индексной страницы), которые могут существовать или нет на файловой системе. Имя файла или путь должны быть указаны в качестве аргумента конструктора, например: [% USE File('foo.html') %]
[% USE File('foo/bar/baz.html') %]
[% USE File('/foo/bar/baz.html') %]
Файл должен существовать на текущей файловой системе (если только не установлена опция 'nostat', смотри ниже) по абсолютному пути, когда путь начинается с '/' (например, '/foo/bar/baz.html'), или, в противном случае, по пути, относительному к текущему рабочему каталогу. Конструктор выполняет для файла stat() и делает доступным возвращаемый результат через 13 элементов плагина: dev ino mode nlink uid gid rdev size
atime mtime ctime blksize blocks
Например: [% USE File('/foo/bar/baz.html') %]
[% File.mtime %]
[% File.mode %]
...
Дополнительно устанавливаются элементы 'user' и 'group', возвращаемые вызовами getpwuid() и getgrgid() с соответствующими элементами файла 'uid' и 'gid'. На платформах Win32, на которых getpwuid() и getgrid() не доступны, значения этих элементов не определены. [% USE File('/tmp/foo.html') %]
[% File.uid %] # например, 500
[% File.user %] # например, abw
Поиск пользователя/группы можно запретить установкой опции 'noid'. [% USE File('/tmp/foo.html', noid=1) %]
[% File.uid %] # например, 500
[% File.user %] # ничего
Флаг 'isdir' установлен, если файл является каталогом. [% USE File('/tmp') %]
[% File.isdir %] # 1
Если stat() на файле завершается неудачно (например, файл не существует, недостаточно прав доступа к файлу и т.п.), конструктор возбуждает исключение 'File'. Его можно перехватить внутри блока TRY...CATCH. [% TRY %]
[% USE File('/tmp/myfile') %]
File exists!
[% CATCH File %]
File error: [% error.info %]
[% END %]
Обратите внимание на регистр типа исключения, 'File' обозначает ошибку, возбужденную плагином 'File', в отличие от обычного исключения 'file', возбуждаемого Template Toolkit. Обратите внимание, что на плагин 'File' также можно ссылаться по имени в нижнем регистре 'file'. Тем не менее, исключения всегда возбуждаются с типом 'File', независимо от используемого в имени плагина регистра. [% USE file('foo.html') %]
[% file.mtime %]
Как и для любого другого плагина Template Toolkit, альтернативное имя можно указать при создании объекта. [% USE foo = file('foo.html') %]
[% foo.mtime %]
Для предотвращения выполнения stat() на указанном файле, можно указать опцию 'nostat'. В этом случае, файл может не существовать в файловой системе, попытки проверить это предприниматься не будет, и если его нет исключение не будет возбуждено. Значения элементов, устанавливаемые по результатам выполнения stat(), останутся пустыми. [% USE file('/some/where/over/the/rainbow.html', nostat=1) %]
[% file.mtime %] # ничего
Все плагины File независимо от опции 'nostat', имеют ряд элементов, связанных с указанным исходным путем к файлу.
В дополнение предоставляются следующие методы:
|
ПРИМЕРЫ |
[ Индекс ] [ Модули ] [ Наверх ] |
[% USE file('/foo/bar/baz.html') %]
[% file.path %] # /foo/bar/baz.html
[% file.dir %] # /foo/bar
[% file.name %] # baz.html
[% file.home %] # ../..
[% file.root %] # ''
[% file.abspath %] # /foo/bar/baz.html
[% file.ext %] # html
[% file.mtime %] # 987654321
[% file.atime %] # 987654321
[% file.uid %] # 500
[% file.user %] # abw
[% USE file('foo.html') %]
[% file.path %] # foo.html
[% file.dir %] # ''
[% file.name %] # foo.html
[% file.root %] # ''
[% file.home %] # ''
[% file.abspath %] # foo.html
[% USE file('foo/bar/baz.html') %]
[% file.path %] # foo/bar/baz.html
[% file.dir %] # foo/bar
[% file.name %] # baz.html
[% file.root %] # ''
[% file.home %] # ../..
[% file.abspath %] # foo/bar/baz.html
[% USE file('foo/bar/baz.html', root='/tmp') %]
[% file.path %] # foo/bar/baz.html
[% file.dir %] # foo/bar
[% file.name %] # baz.html
[% file.root %] # /tmp
[% file.home %] # ../..
[% file.abspath %] # /tmp/foo/bar/baz.html
# вычисляем другие пути к файлам относительно этого файла и его корневого каталога
[% USE file('foo/bar/baz.html', root => '/tmp/tt2') %]
[% file.path('baz/qux.html') %] # ../../baz/qux.html
[% file.dir('wiz/woz.html') %] # ../../wiz/woz.html |
АВТОРЫ |
[ Индекс ] [ Модули ] [ Наверх ] |
Михаэль Стивенс (Michael Stevens <michael@etla.org>) написал исходный базовый плагин Directory. Энди Уардли (Andy Wardley <abw@wardley.org>) разделил его на отдельные плагины File и Directory, добавил немного кода и документации по поддержке VIEW, и сделал несколько небольших правок. |
ВЕРСИЯ |
[ Индекс ] [ Модули ] [ Наверх ] |
2.65, поставляется в составе Template Toolkit версии 2.14, дата релиза - 4 октября 2004. |
АВТОРСКИЕ ПРАВА |
[ Индекс ] [ Модули ] [ Наверх ] |
Этот модуль является свободно-распространяемым программным обеспечением; вы можете распространять и/или модифицировать его на тех же условиях, что и Perl. |
СМОТРИ ТАКЖЕ |
[ Индекс ] [ Модули ] [ Наверх ] |