router - переместить все файлы в папку publi c - PullRequest
0 голосов
/ 16 февраля 2020

I sh для перемещения всех файлов из папки publi c, кроме "index. php" и "assets". Я медленно обновляюсь до пользовательского MVC для моего небольшого проекта: я переместил функции, настройки и классы и т.д. c. - это просто старые файлы спагетти PHP. Я хочу переместить их все до того, как начну разбивать их на модели. Представления и т. Д. c.

Я бы предпочел ядро ​​PHP и не использовать symfony, если кто-либо может помочь.

Итак, вместо того, чтобы все файлы были на одном уровне с «index. php», все перенаправлялось бы в новую папку со всеми файлами и новым «index2. php» - поэтому я использовал простой способ, который работает на каком-то уровне, но есть 30 файлов, и я не могу записать каждый из них, если есть лучший способ.

htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php [QSA,L]

index. php:

<?php
$request = $_SERVER['REQUEST_URI'];

switch ($request) {
    case '/' :
        require __DIR__ . '/app/memberlist.php';
        break;
    case '' :
        require __DIR__ . '/app/memberlist.php';
        break;
    case '/staff' :
        require __DIR__ . '/app/staff.php';
        break;
    default:
        http_response_code(404);
        require __DIR__ . 'app/pdointro.php';
        break;

}

Также в файле есть несколько путей, которые я не знаю, как добавить, например:

header("Location: account-details.php?id=$id"); 

и:

<a href='account.php?action=edit_settings&amp;do=edit'>edit</a>

1 Ответ

0 голосов
/ 16 февраля 2020

Приятно, что вы выбираете шаблон проектирования переднего контроллера. Я думаю, вы могли бы динамически создать массив со всеми вашими php файлами, а затем провести сравнение с REQUEST_URI.

Взгляните на php документы:

Пример ниже:

$files = [];

$dirIterator = new \RecursiveDirectoryIterator(
    'your_php_project_root_dir',
    \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::KEY_AS_PATHNAME |
    \FilesystemIterator::CURRENT_AS_SELF
);

$fileIterator = new \RecursiveIteratorIterator($dirIterator);

foreach($fileIterator as $file) {
    $filePath = $file->getPathName();
    $fileExt = $file->getExtension();
    $fileName = $file->getFileName();
    $fileSubPath = $file->getSubPath();
    $isFile = $file->isFile();

    // here you can filter, make condition and then add php files to your array.
    // $files[$fileName] 
}

if ($path = \array_search($_SERVER['REQUEST_URI'], $files)) {
    require($path);
}

exit;

Это идея того, что вы могли бы сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...