Хочу посмотреть реализацию класса Router в соц. сетях - PHP ООП

tarabukinivan

Новичок
Добрый день!
Хотел бы увидеть простой, но без косяков код Router для сайтов типа соц. сетей. Где реализовано вот такое: host.ru/<Имя юзера>/about:
host.ru/Ivan/address, host.ru/Nikolay/address.
host.ru/Ivan/about, host.ru/Nikolay/about

Кто-нибудь видел, есть ли в сети видеоуроки или что-нибудь с такой реализацией?
 

Фанат

oncle terrible
Команда форума
С одной стороны, я понимаю, что дети, воспитанные гаджетами, воспринимают информацию только в виде видеоуроков.
С другой пора бы уже и узнать, что существуют и другие способы. Например google. Это совсем несложно.
Набираешь в адресной строке своего браузера три простых слова, simple php router - и получаешь кучу материала для изучения!
 

tarabukinivan

Новичок
Спасибо antson. Но я бы хотел увидеть полную реализацию. Фреймворк какой нибудь, где мартрутизация такая как я написал.
С одной стороны, я понимаю, что дети, воспитанные гаджетами, воспринимают информацию только в виде видеоуроков.
С другой пора бы уже и узнать, что существуют и другие способы. Например google. Это совсем несложно.
Набираешь в адресной строке своего браузера три простых слова, simple php router - и получаешь кучу материала для изучения!
@Фанат, Мне не нужен типичный контроллер типа host.ru/page/about или host.ru/post/add, нужен такой как в соцсетях host.ru/viktor/about или host.ru/viktor/newpost
 

tarabukinivan

Новичок
Спасибо! Но в париж не собираюсь)) Конечно можно разбить url, и сделать любой класс, но хотел бы сначала увидеть урок с разбором кода. В сети же много уроков. Может кто встречал такой урок?
 

AnrDaemon

Продвинутый новичок
Не понимаю, что именно ты хочешь увидеть. Принципиальных отличий просто нет.
 

Фанат

oncle terrible
Команда форума
@Фанат, Мне не нужен типичный контроллер типа host.ru/page/about или host.ru/post/add, нужен такой как в соцсетях host.ru/viktor/about или host.ru/viktor/newpost
Все типичные контроллеры делают то что тебе надо, им нет никакой разницы между host.ru/page/about и host.ru/viktor/about. Всего лишь добавляется одна переменная в раут.
 

tarabukinivan

Новичок
Не понимаю, что именно ты хочешь увидеть. Принципиальных отличий просто нет.
Дело в том, что пользователей создают сами клиенты и имя тоже выбирают любое([a-z0-9-]). Поэтому, хочу узнать какие камни бывают. Например, думаю что надо запретить имя пользователя совпадающее с папками внутри public. Может, еще что-то?
 

tarabukinivan

Новичок
Например, Если пользователь сделает имя css, то будет открываться директория, а не его страница
 

tarabukinivan

Новичок
Так-то маршрутизатор будет примерно такой. Нет ли изъянов?

Router::add('^$',['controller' => 'Main', 'action' => 'index']);
Router::add('^(admin)/?(?P<action>[a-z-]+)?/?(?P<alias>[a-z-]+)?$', ['controller' => 'CAdmin']);
//если нет action, то по умолч view
//user admin Забронировано и папки в каталоге public
Router::add('^(user)/?(add)?/?(?P<user>[a-z-]+)?/?(?P<alias>[a-z-]+)?$', ['controller' => 'CAddUser', 'action' => 'add']);
Router::add('^(?P<user>[a-z0-9-]+)/z/?(?P<action>[a-z-]+)?/?(?P<alias>[a-z-]+)?$', ['controller' => 'CZki']);
Router::add('^(?P<user>[a-z0-9-]+)/gal/?(?P<action>[a-z-]+)?/?(?P<alias>[a-z-]+)?$', ['controller' => 'CGal']);
Router::add('^(?P<user>[a-z0-9-]+)/?(view)?/?(?P<action>[a-z-]+)?/?(?P<alias>[a-z-]+)?$', ['controller' => 'CView']);
//если view нет, то по умол View
//В action будут значения add, edit, del, если их нет, то index
//В alias id (необязательный), она нужна при action del, edit или del, если его нет то можно присвоить false
 

tarabukinivan

Новичок
Наверное еще надо было указать не менее 3-х символов или не стоит? Или достаточно будет проверки при создании.
Чтобы не смотрели содержимое директории наверно в папках кину пустой index
 

tarabukinivan

Новичок
Спасибо! конечно можно делать файлы на другом домене. А так думаю не зачем пользователям имя user, images или admin.
 

fixxxer

К.О.
Партнер клуба
Ну сделай blacklist. Тоже мне теория программирования.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Да, в теории этому делать нехрен.
 
Сверху