#php #short-url #dynamic-url
#php #короткий url #dynamic-url
Вопрос:
Итак, я использую процедурный стиль программирования в PHP с 2006 года. Но за последние 4 с лишним года упустил много времени, чтобы стать лучше.
В последнее время я начал больше признавать объектно-ориентированное программирование.
То, что мне больше всего нравится в этом, — это организация в стиле MVC и короткие URL-адреса.
вместо URL-адреса «index.php?page=profileamp;member= 1», это будет «страница / профиль / член / 1».
Я пытаюсь изучить архитектуру ООП и MVC с использованием широкого спектра ресурсов, но для меня это все еще слишком сложно. Даже спустя месяц!
Я всегда просто использовал basic function(etc) {}, if,else,and,or операторы и 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']) amp;amp; 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 aka index.php?page=profileamp;user = 1
(пользовательская переменная является запросом к базе данных)
Любая помощь будет принята с благодарностью!!!
Комментарии:
1. Ключевое слово (в настоящее время), которое вы ищете, это: маршрутизация. Базовое руководство вы можете найти здесь: blogs.shephertz.com/2014/05/21 /… , но, немного погуглив, вы найдете гораздо более продвинутые вещи.
2. Это сложный урок, который нужно обдумать в начале, по крайней мере, для меня, он поможет вам создать простой маршрутизатор… youtube.com/watch?v=OsCTzGASImQ Однако я настоятельно рекомендую ознакомиться с фреймворком (и узнать о composer), потому что у них есть встроенные маршрутизаторы, которые намного надежнее, чем все, что может создать ученик…
3. Просто примите концепцию MVC, которую немного сложно понять, но придерживайтесь ее. Выберите популярный современный фреймворк (популярность важна, так как вам понадобится хорошее сообщество, чтобы задавать вопросы, находить учебные пособия и т. Д.) И создайте что-нибудь с нуля, например, базовый блог. Я бы предложил Laravel с помощью laracasts (очень хорошие видеоуроки, большинство из которых для начинающих бесплатны). Есть много вещей для достойного фреймворка, помимо системы маршрутизации. Как только вы поймете автозагрузку и orm, вы вряд ли вернетесь к процедурному ванильному php, за исключением одноразовых сценариев оболочки
4. Большое спасибо! Я собираюсь рассмотреть этот материал прямо сейчас. У меня действительно есть composer, и я уже много им пользуюсь. Единственная проблема, с которой я сталкиваюсь, — это непонимание структуры MVC и стиля кода ООП, которые используют все его приложения. странно, что я не могу разобраться в коде ООП, даже после месяца попыток, но процедурное программирование казалось мне таким простым для понимания
Ответ №1:
Вы можете выполнить это с помощью так называемого фронт-контроллера. Эта статья Sitepoint может помочь понять концепцию, но она не обязательно должна быть объектно-ориентированной, чтобы ее реализовать.
По сути, вместо того, чтобы выполнять какое-либо фактическое переписывание, вы бы просто направляли все запросы на index.php
:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php
Теперь, внутри index.php
, вы можете выделить запрос отдельно parse_url
и обработать запрос так, как вы хотите.