|
|
|
| Доброго времени суток.
Решил на днях написать интернет магазин. Использую modrewrite и в $route попадают значения вида content/pageName где content - это метод контроллера, который необходимо запустить, a pageName - параметр который необходимо передать в метод.
Нашел только одно решение для исполнения такой архитектуры:
<?php
$route =@ $_GET['route'];
if($route == "" || $route == "index") $controller->content("index");
elseif(preg_match("|^content/([A-z_0-9-]+).*$|",$route,$namePage)) $controller->content($namePage[1]);
elseif(preg_match("|^category/([A-z_0-9-]+)\.html$|",$route,$categoryIden)) $controller->listProductsCat($categoryIden[1]);
elseif(preg_match("|^subcat/([A-z_0-9-]+)\.html$|",$route,$subcat)) $controller->listProductsSubCat($subcat[1]);
elseif(preg_match("|^product/.*_([\d]+)\.html$|",$route,$product)) $controller->product($product[1]);
elseif(preg_match("|^insertProdInCart/{0,1}$|",$route,$product)) $controller->insertProdInCart();
elseif(preg_match("|^userCart/{0,1}$|",$route,$product)) $controller->userCart();
elseif(preg_match("|^fastBuy/{0,1}$|",$route,$product)) $controller->fastBuy();
|
Но встал вопрос:
насколько ресурсоемок данный способ и не порушит ли он мне сервер? может у кого есть опыт разработки высоко нагруженных проектов и сможете подсказать более приемлимый способ?
Заранее благодарен за ответы. | |
|
|
|
|
|
|
|
для: tvv123456
(19.03.2014 в 20:36)
| | какой-то стремный роутер. на самом деле не порушит, если конечно будет корректно работать. лучше уделите больше внимания базе данных, расстановке индексов и т.д. там куда большее влияние на производительность | |
|
|
|
|
|
|
|
для: psychomc
(19.03.2014 в 20:50)
| | а почему стремный? | |
|
|
|
|
|
|
|
для: tvv123456
(19.03.2014 в 21:34)
| | потому что написан скорее всего рукой школьника или новичка. это даже роутером сложно назвать, т.к это даже не класс. конкретно ту функциональность, которую он реализует, проще и эффективнее было бы сделать через htaccess | |
|
|
|
|
|
|
|
для: psychomc
(19.03.2014 в 22:32)
| | Не совсем понимаю о чем речь. Можно пример? Интересует содиржимое .htaccess и что в итоге должно попасть в route
Должны обязательно выполняться следующие минимальные условия:
при url mySite.ru/category/phone.html
Будет запущен контроллер category с параметром phone, который соберет всю информацию для view и пользователю будет выдан список товара из категории phone.
Также могут передаваться другие параметры:
например, постраничная навигация тогда url будет таким:
mysite.ru/category/page/2/phone.html
при помощи регулярных выражений я легко смогу вытащить номер страницы, а вот при помощи htaccess не знаю реализации
Может возникнуть вопрос зачем вообще тогда mod-rewrite, если можно просто считать url и найти в нем нужные параметры?
Но при использовании mod-rewrite можно создать допустим директорию userCabinet со своим индексным файлом в который опять же будут передаваться необходимые данные в $route и ничего лишнего(ну, конечно, если в эту директорию подкинуть нужный htaccess).
что тут школьного и как сделать лучше, чтобы все работало как я описал выше? | |
|
|
|
|
|
|
|
для: tvv123456
(19.03.2014 в 22:41)
| | http://ruseller.com/lessons.php?rub=28&id=309
по поводу школьного...только новичек мог запихнуть в один класс (объектом которого является $controller) страницы, категории, продукты, корзину и бог знает что ещё. если хотите понять как должен выглядеть настоящий роутер и как вообще должна быть правильно построена mvc-система, посмотрите документацию любого популярного mvc-фреймворка, например zend framework, symphony, kohana и т.д. это тема слишком широкая. то, что я вижу в вашем примере, использовать не стоит. если нужен конкретно модуль интернет-магазина, можете попробовать вот это http://www.prestashop.com/ru/. если хотите написать интернет-магазин сами, то тоже советую использовать фреймворк, но предварительно очень желательно досканально изучить php, в частности его ООП возможности | |
|
|
|