Проверьте, существует ли Каталог в PHP

В примере, который вы публикуете, все три процесса являются частью единой единицы работы. Но ваш вопрос противоречит этому факту.

В следующих примерах я пропускаю создание и распоряжение экземпляром db. Рекомендуется заключить его в блок using, если применимо.

Исходя из вашего вопроса, вы хотите разделить ваш UoW на три (по одному для каждого процесса) раздела. Итак, что-то похожее на приведенное ниже является первым выбором:

try
{
    //Start new UoW here
    db = new .....
    // Process 1: inserts record using repository for EntityModel1
    db.Commit();
}
catch (Exception ex)
{
    //Log or whatever
}

try
{
    //Start new UoW here
    db = new .....
    // Process 2: updatesrecord using repository for EntityModel2
    db.Commit();
}
catch (Exception ex)
{
    //Log or whatever
}

try
{
    //Start new UoW here
    db = new .....
    // Process 3: inserts record using repository for EntityModel3
    db.Commit();
}
catch (Exception ex)
{
    //Log or whatever
}

Другой альтернативой является Commit после завершения каждого процесса. Но это зависит от того, как спроектирован ваш UoW и как закодирован ваш метод Commit:

try
{
    // Process 1: inserts record using repository for EntityModel1
    db.Commit();

    // Process 2: updatesrecord using repository for EntityModel2
    db.Commit();

    // Process 3: inserts record using repository for EntityModel3
    db.Commit();
}
catch (Exception ex)
{
    //Log or whatever
}
24
задан hakre 3 November 2012 в 11:02
поделиться

3 ответа

Должно работать правильно. Из документации is_dir () :

Возвращает TRUE, если существует имя файла и является каталогом , ЛОЖЬ в противном случае.

Ну, во всяком случае, если он не попробует это:

if(file_exists($dir) && is_dir($dir))

Кстати. результаты этих функций кэшируются в кеше статистики. Используйте clearstatcache () для очистки этого кэша.

53
ответ дан vartec 28 November 2019 в 22:59
поделиться

Возможно, вы захотите использовать opendir () после того, как is_dir () согласится, что путь (мог) быть каталогом.

Если ресурс, возвращаемый opendir (), действителен, вы знаете, что у вас есть каталог, и уже есть дескриптор для его чтения.

Просто обязательно вызовите closedir () в любом случае, если верный дескриптор будет возвращен.

Редактировать:

Этот ответ предполагает, что вы будете открывать каталог в любом случае. Если вам просто нужно убедиться, что путь в порядке / действителен, file_exists () намного дешевле.

2
ответ дан Tim Post 28 November 2019 в 22:59
поделиться

Вы можете попробовать это:

if(is_dir($dir) && is_writeable($dir))
{
    // ...
}
0
ответ дан Bart S. 28 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: