Динамический php короткий URL

Так что я использую стиль процедурного программирования в PHP с 2006 года. Но последние 4 с лишним года упускали возможность улучшаться.

Недавно я начал больше признавать объектно-ориентированное программирование.

Больше всего на это указывает мне стиль организации MVC и короткие URL-адреса.

вместо того, чтобы URL был "index.php?page=profile&member=1", это было бы "page/profile/member/1".

Я пытаюсь изучить архитектуру ООП и MVC с использованием широкого спектра ресурсов, но это все еще слишком сложно для меня. Даже через месяц!

Я всегда просто использовал базовую функцию (и т. Д.) {}, If,else, и, или операторы и SQL-запросы, чтобы выполнить работу. Эти знания до сих пор в основном покрывали все, что мне нужно.

Я задаюсь вопросом, есть ли способ использовать мой основной стиль процедурного программирования и все же достичь сокращенных URL-адресов?

Я попробовал этот метод ниже

.htaccess

RewriteEngine On
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php?page=$1 [L]

index.php

<?php

$links = parse_ini_file('links.ini');

if (isset($_GET['page']) && array_key_exists($_GET['page'], $links)) {
    require $links[$_GET['page']];
}
else {
    echo '
    Home page or unknown link
    ';
}

links.ini

members  = pages/members.php
profile  = pages/profile.php

Этот метод работает просто на сокращение URL, но я не знаю, как заставить его работать с profile/user/1 или index.php? Page=profile&user=1 (переменная пользователя является запросом к базе данных)

Любая помощь будет принята с благодарностью!!!

1 ответ

Вы можете сделать это с помощью так называемого фронт-контроллера. Эта статья Sitepoint может помочь понять концепцию, но она не должна быть объектно-ориентированной, чтобы ее реализовать.

По сути, вместо того, чтобы переписывать текст, вы просто перенаправляете все запросы наindex.php:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php

Теперь внутриindex.phpВы можете выбрать запрос вместе сparse_url и обрабатывать запрос, как вы хотите.

Другие вопросы по тегам