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. |
СМОТРИ ТАКЖЕ |
[ Индекс ] [ Модули ] [ Наверх ] |