- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
/*
где-то в
/includes.php
*/
function __autoload($class_name) {
if ($class_name[0] == 'm'){
$m = DOCROOT . APPBASE . 'Models/' . substr($class_name,1) . '.php';
if(defined('DEBUG')) echo 'autoload model class'.$m.'<br/>';
require_once $m;
} elseif ($class_name[0] == 'c'){
$c=DOCROOT . APPBASE . 'Controllers/' . substr($class_name,1) . '.php';
if(defined('DEBUG')) echo 'autoload controller class'.$c.'<br/>';
require_once $c;
}
}
/*
где-то в
/Controllers/Data.php
*/
class cData extends controller {
/* ... */
}
/*
где-то в
/Models/Data.php
*/
class mData extends model {
/* ... */
}
каждый программист обязан написать свой MVC и свой ActiveRecord
ГК или не ГК - зависит от контекста.
значит в скором времени это накладут на govnokod.ru
говным говно
там прямо в тексте написано
поэтому не показательная характеристика
а оно, оказывается, проверяет, если был создан уже объект, то возвращает его, нет - создает и возвращает )) почти синглтон )))
простая архитектура, есть ссылка например show/post/10
есть маршрутизатор, который по show/post/:id определяет что нужно вызвать такой-то экшн такого-то контроллера, далее инклудится файл с контроллером (не автолоадером) и создается его инстанс, вызывается экшн. Внутри контроллера я могу вызывать кучу разных классов, которые должны грузиться автолоадером, при чем не только модели но и разные хелперы и т п
/Users/Profile/Controller.php - класс Users_Profile_Controller extends Controller
/Users/Profile/Model.php - класс Users_Profile_Model extends Model
/Users/Profile/View.php - класс Users_Profile_View extends View
/Users/Profile/views/main.php - основной шаблон вьюва
/Users/Profile/views/edit.php - шаблон вьюва страницы редактирования
/Users/Profile/js/*.js - подрубаемые жабаскрипты профайла
/Users/Profile/css/*.css - подрубаемые стили профайла
/Users/Profile/img/*.* - картинки, относящиеся только к профайлу.
Так плохо?
но у меня идея в том, что бы все, относящееся к компоненту, держать вместе в папках с подпапками, вместо разброса по корневым директориям по всему проекту
...
Type\Class
уже можно:)
а рутеры то тут есть?
понятно, что все, что выходит за рамки "просто id" передается через POST
APPBASE/Users/add/UserName
приведет к созданию экземпляра класса cUsers и вызову его метода
$this->add('UserName');
Этот метод создаст пользователя и выполнит $this->renderAction('ViewName') или $this->renderJSON($data), что приведет к html- или JSON-выдаче
APPBASE/news/read/navodnenie-v-seo-otdele
просто там об этом подумано "за нас".
А кеширование писать легко:
$mc = new Memcaсhe;// если демон на локалхосте и 11211 порту, иначе указать куда конектитсья
$mс->set('ключ', 'значение');
echo $mc->get('ключ');
// Только свой мемкеш не нужно писать:)
model реализует подобие ActiveRecord - на уровне выбрать/вставить/листать абстрагирует от БД
controller имеет методы renderAction, renderText и renderJSON
renderAction собирает вид /Views/controllerName/actionName.php
методы возвращают собранный вид, не выводя его. Соответственно можно собрать выдачу нескольких контроллеров на одном общем виде...