Насколько я могу сказать работы msysgit отлично под Windows Vista.
Это после целого 2-месячного опыта, проверяющего плагины и приложения для Ruby on Rails:-)
Так или иначе, это был бриз для установки, без проблем.
Вместо использования readdir
вы можете просто использовать scandir
( документация ), которая по умолчанию сортирует в алфавитном порядке.
Возвращаемое значение scandir
- это массив вместо строки, поэтому ваш код придется немного скорректировать, для перебора массива вместо проверки конечного возвращаемого значения null
. Кроме того, scandir
принимает в качестве входных данных строку с путем к каталогу вместо дескриптора файла, новая версия будет выглядеть примерно так:
foreach(scandir($mainframe->getCfg( 'absolute_path' ) ."/images/store/") as $file) {
// rest of the loop could remain unchanged
}
Этот код выглядит довольно запутанным. Вы можете отделить логику обхода каталога от презентации. Гораздо более краткая версия (на мой взгляд):
<?php
// Head of page
$it = new DirectoryIterator($mainframe->getCfg('absolute_path') . '/images/store/'));
foreach ($it as $file) {
if (preg_match('#\.jpe?g$#', $file->getFilename()))
$files[] = $file->getFilename();
}
sort($files);
// Further down
foreach ($files as $file)
// display links to delete file.
?>
Вам даже не нужно беспокоиться об открытии или закрытии дескриптора, а поскольку вы проверяете имя файла с помощью регулярного выражения, вам не нужны никакие разнесенные или условные проверки.
Мне нравится Glob Это делает чтение каталога мгновенным, поскольку он возвращает массив, который легко сортировать:
<?php
$files = glob("*.txt");
sort($files);
foreach ($files as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>
Если вы используете Joomla1.5, вам следует использовать определенную константу JPATH_BASE вместо
$mainframe->getCfg( 'absolute_path' )
. Если это расширение Joomla, которое вы будете распространять, не t используйте scandir () , так как это только PHP5.
Лучше всего использовать Joomla API. В нем есть классы для доступа к каталогам и файлам, которые разложены на уровни, чтобы делать это по разным сетям и протоколам. Таким образом, файловая система может быть, например, через FTP, а классы могут быть расширены для любой сети / протокола.
jimport( 'joomla.filesystem.folder' );
$files = JFolder::files(JPATH_BASE."/images/store/");
sort($files);
foreach($files as $file) {
// do your filtering and other task
}
Вы также можете передать регулярное выражение в качестве второго параметра в JFolder :: files (), который фильтрует файлы, которые вы получаете .
Вы также не хотите использовать литералы URL, такие как / administrator /, поскольку их можно изменить. используйте методы JURI, например:
JURI :: base ();
Если вы хотите убедиться в наличии классов CSS Joomla в таблицах, для:
'<tr class="row0">'
используйте:
'<tr class="row'.($i&1).'">'
где $ i - количество итераций. Это дает вам последовательность чередующихся нулей и единиц.
Если у нас есть встроенные функции PHP, всегда используйте их, они быстрее. используйте glob вместо обхода папок, если он вам подходит.
$ folder_names = array (); $ folder_names = glob ('*', GLOB_ONLYDIR + GLOB_MARK + GLOB_NOSORT);