Как я могу построить карту пути file / dir в PHP?

Я разработчик Frontend, и я решил расширить свои знания изучения PHP. Я все еще изучаю синтаксис / способы выполнения вещей, поэтому, пожалуйста, потерпите меня.

Когда я начал работать над своим первым PHP-проектом, я понял, что мне нужно создать карту путей, чтобы все было чисто и сухо.

Вот как выглядит моя php структура файла:

введите описание изображения здесь

Это легко представить, используя JSON-подобную структуру данных, но я нашел трудное время, пытаясь добиться этого с помощью типов данных PHP (я все еще изучаю синтаксис / способы выполнения действий).

Я немного читал, и я решил использовать некоторые ассоциативные массивы,
Я придумал это решение, которое работает, но я хотел проверить, возможно ли более простое решение. (Я стремлюсь изучить лучшие практики PHP)

Увидеть:

$paths = array(
'dirs' => array(
'base' => '/php/'
)
);

$paths['dirs']['common'] = $paths['dirs']['base'] . 'common/';
$paths['dirs']['home'] = $paths['dirs']['base'] . 'home/';

$paths['files'] = array(
'home' => $paths['dirs']['home'] . 'home.php',
'header' => $paths['dirs']['common'] . 'header.php',
'scripts' => $paths['dirs']['common'] . 'scripts.php',
'footer' => $paths['dirs']['common'] . 'footer.php',
'core' => $paths['dirs']['base'] . 'core.php',
'business-variables' => $paths['dirs']['base'] . 'business-variables.php'
);

Я делаю плохие практики здесь?

Есть ли лучший / простой / стандартный способ сделать это?

-1

Решение

Если вам нужно работать с файлами — лучший и самый простой способ — это использовать DirectoryIterator. В этом случае каждый файл будет объектом, и вы можете использовать его методы. Вот небольшой пример:

// or '/php/' in your case
$path = '/';
foreach (new DirectoryIterator($path) as $file) {
if ($file->isDot()) continue;

if ($file->isDir()) {
print $file->getFilename() . '<br/>';
}
}
0

Другие решения

При условии, что вы не можете просто прочитать структуру папок, используя DirectoryIterator

Для удобства чтения я бы сделал что-то вроде этого:

class FileStructure {
const BASE = '/php/';
const COMMON = 'common/%s';
const HOME = 'home/%s';

public function Paths(){
return array(
'home' => $this->Home('home.php'),
'header' => $this->Common('header.php')
);
}

private function Common($file = null){
return sprintf(static::BASE.static::COMMON, $file);
}

private function Home($file = null){
return sprintf(static::BASE.static::HOME, $file);
}
}
0

По вопросам рекламы [email protected]