Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: autoload в mvc [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 2 [3]   

> Описание: autoload в mvc
esterio
Отправлено: 30 Января, 2015 - 19:18:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




juramaj пишет:
if(file_exists($controller_path)){
// include "application/controllers/".$controller_file;
} else {
Route::ErrorPage404();
}

поймите что здесь происходит и будет понимание.
Я кончено могу вам сказать полностю что зделать, но считаю плохой практикой ибо на понимание что происходит как раз и учаться.
 
 Top
juramaj
Отправлено: 30 Января, 2015 - 19:20:38
Post Id


Гость


Покинул форум
Сообщений всего: 98
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




esterio пишет:
juramaj пишет:
if(file_exists($controller_path)){
// include "application/controllers/".$controller_file;
} else {
Route::ErrorPage404();
}

поймите что здесь происходит и будет понимание.
Я кончено могу вам сказать полностю что зделать, но считаю плохой практикой ибо на понимание что происходит как раз и учаться.

Хорошо, сейчас еще подумаю над этим вопросом. Если что то к вам обращусь с теми вариантами что придут мне в голову.
 
 Top
GoDr
Отправлено: 30 Января, 2015 - 19:59:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




esterio, да хватит издеваться над всеми Радость

Если файл, который располагается по адресу $controller_path существует
if(file_exists($controller_path)){

То мы закомментированием (отключим) строку где он должен был подключиться
// include "application/controllers/".$controller_file;

Если не существует
} else {

То мы покажем вам 404
Route::ErrorPage404();

(Отредактировано автором: 30 Января, 2015 - 20:02:33)



-----
Система управления веб-содержимым Lotos CMS
 
 Top
skiphog
Отправлено: 30 Января, 2015 - 23:37:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Дек. 2014  
Откуда: Киров, Россия


Помог: 11 раз(а)




...

(Отредактировано автором: 02 Февраля, 2015 - 18:20:18)

 
My status
 Top
juramaj
Отправлено: 02 Февраля, 2015 - 13:14:13
Post Id


Гость


Покинул форум
Сообщений всего: 98
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




GoDr пишет:
esterio, да хватит издеваться над всеми Радость

Если файл, который располагается по адресу $controller_path существует
if(file_exists($controller_path)){

То мы закомментированием (отключим) строку где он должен был подключиться
// include "application/controllers/".$controller_file;

Если не существует
} else {

То мы покажем вам 404
Route::ErrorPage404();

Так а как тогда написать сам функцию autoload? Чтобы всё автоматически подгружалось.
 
 Top
esterio
Отправлено: 02 Февраля, 2015 - 14:16:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




juramaj
слово автолоад какбы намекает что запуск происходит автоматически. тоесть если убрать проверку файла и инклуд, то после создания екземпляра класса контролера функция автолодинга запуститься автоматически. в качестве аргумента будет передано название класса (в даном случае контроллера), вот там и стоит подключать файл.
 
 Top
juramaj
Отправлено: 02 Февраля, 2015 - 16:15:47
Post Id


Гость


Покинул форум
Сообщений всего: 98
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




esterio пишет:
juramaj
слово автолоад какбы намекает что запуск происходит автоматически. тоесть если убрать проверку файла и инклуд, то после создания екземпляра класса контролера функция автолодинга запуститься автоматически. в качестве аргумента будет передано название класса (в даном случае контроллера), вот там и стоит подключать файл.

Написал вот так, ничего не сработало. Где ошибка? Не пойму.
PHP:
скопировать код в буфер обмена
  1. class Route
  2. {
  3.     static function start()
  4.     {
  5.         $controller_name = 'Main';
  6.         $action_name = 'index';
  7.         $routes = explode('/', $_SERVER['REQUEST_URI']);
  8.         if ( !empty($routes[1])){      
  9.             $controller_name = $routes[1];
  10.         }
  11.        // if ( !empty($routes[2])){
  12.       //      $action_name = $routes[2];
  13.       //  }
  14.        // $model_name = 'Model'.$controller_name;
  15.         $controller_name = 'Controller'.$controller_name;
  16.       //  $action_name = 'action'.$action_name;
  17.       //  $model_file = strtolower($model_name).'.php';
  18.       //  $model_path = "application/models/".$model_file;
  19.        // if(file_exists($model_path)){
  20.           //  spl_autoload_register(Route::loaderModel);
  21.           //  include "application/models/".$model_file;
  22.       //  }
  23.       //  $controller_file = strtolower($controller_name).'.php';
  24.        // $controller_path = "application/controllers/".$controller_file;
  25.        // if(file_exists($controller_path)){
  26.           //  include "application/controllers/".$controller_file;
  27.        // } else {
  28.        //     Route::ErrorPage404();
  29.        // }  
  30.   //      $controller = new $controller_name;
  31.   //      $action = $action_name;
  32.   //      if(method_exists($controller, $action)){
  33.   //          $controller->$action();
  34.   //      } else {
  35.   //          Route::ErrorPage404();
  36.   //      }
  37.     }
  38. }

И файл autoload.php
PHP:
скопировать код в буфер обмена
  1. function autoload($className)
  2.     {
  3.         $fileName  = '';
  4.         $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
  5.         require $fileName;  
  6.     }
  7.     spl_autoload_register('autoload');
 
 Top
esterio
Отправлено: 02 Февраля, 2015 - 16:48:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




juramaj пишет:
$controller = new $controller_name;

ок почти поняли, но счас что вот этот код делает
 
 Top
juramaj
Отправлено: 02 Февраля, 2015 - 16:52:00
Post Id


Гость


Покинул форум
Сообщений всего: 98
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




esterio пишет:
juramaj пишет:
$controller = new $controller_name;

ок почти поняли, но счас что вот этот код делает

Так я же его закомментировал. Дальше не могу понять, что нужно.
(Добавление)
Как по мне так логика должна выглядеть так:
С URL берем 1-й элемент тоесть это будет у меня контроллер
PHP:
скопировать код в буфер обмена
  1. $controller_name = 'Main';
  2.         $action_name = 'index';
  3.         $routes = explode('/', $_SERVER['REQUEST_URI']);
  4.         if ( !empty($routes[1])){      
  5.             $controller_name = $routes[1];
  6.         }

Потом к этому всему прибавляю
PHP:
скопировать код в буфер обмена
  1. $controller_name = 'application_Controllers_Controller'.$controller_name;

Потом подключается наша ф-ция autoload, и мы делаем следующее
PHP:
скопировать код в буфер обмена
  1. $fileName .= str_replace('_', 'DIRECTORY_SEPARATOR', $className) . '.php';
  2. require $fileName;
  3.  

Вот как то так. Правильно или нет?
 
 Top
digi
Отправлено: 02 Февраля, 2015 - 20:28:08
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




нет, не правильно Улыбка

чем не устраивает ответ, который был 4 дня назад? разобраться с композером, ну минут 30 может быть, если первый раз, а потом только пользоваться.

с роутерами тоже можно не выдумывать велики, а подключить готовый роутер в том числе и симфонический и сразуже разобраться как конфигурировать через yaml

CODE (text):
скопировать код в буфер обмена
  1. http://symfony.com/doc/current/components/routing/introduction.html#load-routes-from-a-file
 
 Top
GoDr
Отправлено: 03 Февраля, 2015 - 08:28:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




juramaj пишет:
Так я же его закомментировал. Дальше не могу понять, что нужно.
Что-то я совсем запутался.. Если закомментировать строку где подключается класс или где создаётся класс, то как ты сможешь к нему обратиться то? Автоподключение и нужно чтобы подключать неподключенное..
А у тебя деление на ноль...


-----
Система управления веб-содержимым Lotos CMS
 
 Top
juramaj
Отправлено: 04 Февраля, 2015 - 12:21:17
Post Id


Гость


Покинул форум
Сообщений всего: 98
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




Не прошло и пол года, но зато разобрался. Всем спасибо за помощь и подсказки. Радость
 
 Top
esterio
Отправлено: 04 Февраля, 2015 - 12:39:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




juramaj
надеюсь вы поняли полностю суть автолодинга в ПХП
 
 Top
juramaj
Отправлено: 04 Февраля, 2015 - 12:43:57
Post Id


Гость


Покинул форум
Сообщений всего: 98
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




esterio пишет:
juramaj
надеюсь вы поняли полностю суть автолодинга в ПХП

Кажись понял. Теперь нужно по больше практики чтобы закрепить знания. Спасибо за помощь.
 
 Top
LIME
Отправлено: 04 Февраля, 2015 - 14:53:14
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




знания автозагрузки...ёёё маё
ппц
мельчает народ
 
 Top
Страниц (3): « 1 2 [3]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB