ОБСУЖДЕНИЕ

(!) MVC

16 сообщений1 просмотровОткрыта
#1
Всем привет) Недавно начал писать небольшой движек и собсно возник некий вопросец на счет роутера.. Допустим, приложение запускается таким образом

CODE

require "framework/autoload.php";
(new \framework\classes\application())->run();



т.е вызовом автолоадера и запуском приложения
autoload-ер простой, но суть и смысл прямой
PHP

function __autoload($class)
{
$class = str_replace(array("\\","_"),"/",$class) . ".php";
if(file_exists($class))
{
require $class;
}
}


Приложение анализарует пути, выполняет поиск контроллера и экшина и вызывает их.

PHP

<?php

namespace framework\classes;
class application
{
public $default_controller_name="welcome";
public $routing=null;
public function __construct()
{
$this->routing=new routing();
$this->routing->collect();
}
public function run()
{

$class_name ="\\application\\controllers\\";
$class_name.=array_shift(
$this->routing->routes
);

if(!class_exists($class_name))
{
$class_name ="\\application\\controllers\\";
$class_name.=$this->default_controller_name;
}

$controller_name=$class_name;
$controller=new $controller_name();

$method_name=array_shift(
$this->routing->routes
);

if(!method_exists($controller,$method_name))
{
$method_name=$controller->default_action_name;
}

$action_name=$method_name;
$controller->$action_name(
$this->routing->routes
);

}
}




ну и собсно роутер, над которым я думаю))

PHP

<?php

namespace framework\classes;
class routing
{
public $routes=[];
public function __construct(){}
public function collect()
{
$routes=array_filter(explode("/", $_SERVER['REQUEST_URI']));
foreach   ($routes as $route)
{
$this-> routes[]= $route;
}
}
}



Дело не в том что я что-то не могу написать, а как правильно всё это реализовать..

Заранее спасибо..

Посты типа что это такое и т.п - проходим мимо.
#2
З.Ы по моему нужно дописать роутер, да бы запуск приложения был корректней или хз.. Хочу услышать ваше мнение.
#3
Посмотри мобайлкмс у меня в файлах и класс роутер в нейроне. щас с компа через часик зайду да разжую. еще можешь на висах меня найти и глянуть темку в профиле где я там писал наработку фреймворка (январь 14го вроде)
там как раз твоя ситуация
#4
и всё таки мало на мастерам кодеров ^_^
#5
Божеупасименяувидетьтакиедлинныеклассы)))
для начала почитай про psr
#6
всмысле? слэши удаляются здесь... там по сути \\
#7
KpuTuK, ты про это дело?
PHP

<?php

require "framework/classes/classloader.php";

$root  = "./";
$pathes=array(
"\\framework\\classes\\"=>"framework/classes",
"\\application\\controllers\\"=>"application/controllers",
"\\application\\models\\"=>"application/models"
);
$classloader=new \\framework\\classes\\classloader($root, $pathes);
$classloader->register();

$application=new \\framework\\classes\\application();
$application->run();

#8
3KZO, аааа удаяляються)) выложи на гит чтоли или на бетбукет)))
у тебя если файловая система повторяет пространства иен достаточно сохранить корень через set_iclude_path и тупо вызвать spl_autoload_register тк имена классов с маленькой буквы а PSR это не только автозагрузка классов но и стил написания кода
#9
http://dumpz.org/1323167/
#10
3KZO, он не нужен
#11
я почему-то подумал что очень удобно, например если адрес директории application измениться, то все заюзаные пространства имен не придется менять, так?
+ ко всему я пока просто код пишу, мб потом всё будет не с маленькой буквы, а цивильнинько)
#12
вот по тому о я и написал про psr два раза
#13
KpuTuK, прочел)
#14
KpuTuK, еще какие-то советы будут, т.к в теме отвечаешь только ты.
#15
Не пробывал разбирать готовые варианты?
Типа такого
http://vk-book.ru/primer-mvc-v-php-vtoraya-statya-marshrutizaciya-kontrolery-eksheny-shablony-i-modeli/
#16
глянь фреймворки))) заходишь на гитхаб вбиваешь framework и смотришь чо по чем))