Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск файла по маске для autoload, Нужно мнение 
:(
    Опции темы
Sanchezzz
Дата 11.6.2013, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



У меня много файлов названо например ArrData, DateFormat, ExtendBaseClass.    
Сейчас классы грузятся по карте классов. В целях того что не соблюдать регистр названия файлов( мне мягко говоря лень) придумываю велосипедист для поиска классов.

Как вы думаете поиск файла по маске через glob хорошая затея?

Прототип
Код

class autoload {
    /*
     * Поиск файла без учета регистра через glob
     * @param  $path  Путь
     * @param  $file  Имя файла
     **/
    public static function findClass( $path , $file = '' ){
        $str = '';
        foreach(str_split($file) as $s){
            if(in_array($s, array('.','*','[',']','/',"'",'"'))){
                $str.= $s;    
            }else{ 
                $str.='['.strtolower($s).strtoupper($s).']';
            }
        }
        $arr =  glob(  rtrim($path,'/') . '/' . $str );
        if(0==count($arr)) return false;
        return $arr; 
    }
}


Это сообщение отредактировал(а) Sanchezzz - 11.6.2013, 21:55


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Fortop
Дата 11.6.2013, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Sanchezzz @  11.6.2013,  21:54 Найти цитируемый пост)
Как вы думаете поиск файла по маске через glob хорошая затея?

Лучше сделай себе канонизатор имен файлов


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Sanchezzz
Дата 11.6.2013, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



smile Не это будет еще странной затеи 



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Fortop
Дата 11.6.2013, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Мне кажется лучше приводить имена файлов к общему виду при сборке проекта

Чем при его работе каждый раз.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
ksnk
Дата 12.6.2013, 07:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Наверное не при сборке, а просто один раз. Рекурсивно спустится по дереву каталога проекта и все файлы, в которых есть описание соответствующего класса переименовать , как написано в классе.
Проблемка тут только одна. Для Windows, если новое и старое имя файла отличается только регистром, переименование может не получится. В этом случае нужно старый файл удалить и новый с новым именем - создать.

Sanchezzz, glob - очень тяжелая операция, чтобы ее запихивать в такие нежные места системы, как автолод. В крайнем случае - можно при деплое создавать карту классов, тем же рекурсивно сканирующим скриптом, в виде var_export массива и подключать ее по надобности.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Sanchezzz
Дата 12.6.2013, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Да я тут уже прогнал функцию по тестам сам убедился что файл ищется тяжело на 1 путь уходит 0.500-0.800 мс
Карта классов у меня уже есть это все родное от фреймворка, а вот модели пока ищутся в добавленных путях.

пока примерно так и оставил в цикле
Код

$path1 = doc_root . DS . trim($path ,'/') .  DS  . ucfirst($class) .'.php';
$path2 = doc_root . DS . trim($path ,'/') .  DS  . $class .'.php';
if(is_file( $path1  ) ){
    include $path1;
    return true;
}elseif(is_file($path2)){
    include $path;
    return true;
}




--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Fortop
Дата 12.6.2013, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(ksnk @  12.6.2013,  07:56 Найти цитируемый пост)
Наверное не при сборке, а просто один раз

ну поскольку 
Цитата(Sanchezzz @  11.6.2013,  21:54 Найти цитируемый пост)
 В целях того что не соблюдать регистр названия файлов( мне мягко говоря лень)


То таки при каждой сборке. Когда будет добавлен новый файл


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.5498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.