|
|
||||||||||||||||||||||
MVC - мой первый скрипт, оцените/исправьте/добавьте/прокомментируйте07.12.2011, 16:37. Показов 9616. Ответов 57
Метки нет (Все метки)
Доброго времени суток, вот я погуглил, почитал всяких статей про MVC на PHP, поюзал немного фреймворк CodeIgniter, и решил что надо чтото в этом роде попробовать написать своё, вот и начал лепить, и щас выкладываю вам код того что налепил...
Зараннее прошу сильно не ругаться т.к. раньше никогда неписал скрипты на ООП, и неделю назад - вообще неимел понятие о том что такое MVC!!! начну с файла .htaccess, расписывать ничего небуду, просто вот его содержимое:
файл index.php - в корне сайта:
далее создаем обьект $router класса Router и вызываем метод delegate - который в свою очередь возьмет строку из $_GET['route'] разобьет её на куски и будет подгружать контроллерыи их методы с или без параметров... Вот код класса Router, который находится в../conf/router.php:
Вот контроллер Index:
в контроллере Home - есть функция index - которая работает если пуста переменная $action класса Router, и есть функция view_home - которая может принимать параметр(по умолчанию - он = NULL) - здест тоже всё работает через delegate() класса Router. Чудо, когда я вот так набираю в адресной строке http://localhost/home/view_home/variable, всё работает ![]() а вот когда просто http://localhost/ - то контроллер Index - вызывается дважды........ Взглянув на этот код - сразу видно что это жесть,и первое что мне ненравится - это то что всем методам контроллеров мы можем передать только по одному параметру(который хранится в $vars) - а если надо больше - непойму как поступить, но всёже я хочу услышать советы, поправки, и вообще может я всё тут неправильно сделал, жду ваших комментов... Спасибо за внимание!!!
3
|
||||||||||||||||||||||
| 07.12.2011, 16:37 | |
|
Ответы с готовыми решениями:
57
Мой первый вывод новостей Мой первый класс в ООП Оцените код пожалуйста - правильно ли я понял ООП и MVC? |
|
|
||||||||||||
| 09.12.2011, 17:17 [ТС] | ||||||||||||
0
|
||||||||||||
|
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
|
|
| 09.12.2011, 17:24 | |
|
И повторяю в 10-ый раз
![]() Напиши уже дурацкий $this-> перед своей переменной $model в функции _construct(); !!!!!!! $model - не глобальная переменная! $this->model - переменная принадлежащая тому же классу, которому принадлежит функция _construct(). Добавлено через 1 минуту Обьявляется как $model в классе, но вызывается как $this->model.
0
|
|
|
|
||||||||||||
| 09.12.2011, 17:26 [ТС] | ||||||||||||
Fatal error: Using $this when not in object context А так:
Fatal error: Cannot access empty property
0
|
||||||||||||
|
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
|
|
| 09.12.2011, 17:36 | |
|
тогда допиши require('Home_m.php'); в самом начале файла. Он не подгружается автолоадером.
Добавлено через 41 секунду $this->$model - это вообще не то. И вообще из другой степи. Тебе нужно $this->model.
0
|
|
|
|
|||||||
| 09.12.2011, 17:41 [ТС] | |||||||
Сработала функция __autoload(); - Загружен класс home_m и ниже ошибка: Using $this when not in object context Сделал require - он и перестал грузиться, но ошибка осталась....
0
|
|||||||
|
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
|
||||||||||||
| 10.12.2011, 03:56 | ||||||||||||
|
на ООП не пишу, полгода назад взялся за эту тему, но решил сначала освоить MVC на процедурном методе.
Кстати в сети читал, что если исходить по умному, то сайт лучше писать процедурно, но используя классы как библиотеки, а всю архитектуру строить на ООП - это не совсем правильно что ли. Спорить не буду, тем более, как уже сказал с ООП знаком очень поверхностно. Теперь к теме, Еще такая вешь, типа сохранение в self
у тя знания посвежее ![]() Добавлено через 3 минуты а если надо обратиться к другому классу, тогда в конструкторе напиши имя уже того класса, который нужен (как я понял те нужен класс Home_m)
брр.., чуть не забыл, нужно проинклудить файл с другим классов в начале файла класса Home() , и думаю лучше будет использовать include_once(), поэтому наверное у тя 2 раза грузился класс или файл, забыл
1
|
||||||||||||
|
|
||
| 10.12.2011, 14:58 [ТС] | ||
|
0
|
||
|
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
|
||
| 10.12.2011, 16:13 | ||
|
Sanu0074, попробуй подключать классы без автолоуда, напрямую через include_once(), посмотри сработает или нет.
0
|
||
|
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
|
|
| 10.12.2011, 18:47 | |
|
Прикрепи код файлами, попробую так запустить.
0
|
|
|
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
|
|||||||||||||||||
| 10.12.2011, 22:31 | |||||||||||||||||
или так
0
|
|||||||||||||||||
|
|
||||||
| 11.12.2011, 01:11 [ТС] | ||||||
Fatal error: Using $this when not in object context я немогу понять почему так происходит!!! хотя вот статью прочитал, тут: http://vredniy.ru/2010/03/mvc-introdution/ именно такой способ работает!! странно както!!
0
|
||||||
|
13 / 13 / 5
Регистрация: 06.12.2011
Сообщений: 50
|
||||||
| 11.12.2011, 01:23 | ||||||
|
хз, я вот только что попробовал
Home_m Object ( [tmp] => Привет )
0
|
||||||
|
|
||
| 11.12.2011, 01:32 [ТС] | ||
|
$a = new Home(); $a->get_file(); у меня не так обращение идет, почитай тему полностью, поймеш что откуда берется и файлы я выше выкладывал можеш кинуть их себе и попробовать запустить!
0
|
||
|
13 / 13 / 5
Регистрация: 06.12.2011
Сообщений: 50
|
|
| 11.12.2011, 02:23 | |
|
Читал-читал не пойму что нужно и где есть проблема. Скачал твои исходники, запустил - все ок, кроме мелких ошибок ничего не заметил. версия php какая? лучше не опускать указание public private static(читал где-то выше что ты надеешься на то что переменные по стандарту идут паблик) и правильное обращение к соответствующим типам.
0
|
|
|
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
|
|
| 12.12.2011, 08:11 | |
|
поставь 5.3.8, проадпейть апач/nginx. Хз потому что тоже.
Добавлено через 53 секунды Скопируй папку в соседний домен, в конце концов Выключи кэширование. Смени расу, пол, место проживания
0
|
|
|
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
|
||
| 12.12.2011, 11:51 | ||
|
На дэнвере, на одном компе, различие - название папки. А так - две копии. Не знаю, с чем было связано.
0
|
||
| 12.12.2011, 11:51 | |
|
Оцените мой код. Знания в Веб технологиях у меня не маленькие и опыт тоже!
Оцените мой первый сайт на php Проверка на дырки, мой первый работоспособный скрипт регистрации и авторизации Исправьте/добавьте, пожалуйста, в программе код, чтобы стала работающей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|