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

 PHP.SU

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


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

> Описание: autoload в mvc
juramaj
Отправлено: 29 Января, 2015 - 18:55:34
Post Id


Гость


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


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




Доброго времени суток! Подскажите пожалуйста, нет ли у кого примера route в реализации php, чтобы там была реализована функция __autoload. Может есть ссылка на источник где это всё реализовано. Заранее спасибо.
 
 Top
caballero
Отправлено: 29 Января, 2015 - 19:17:11
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




http://svyatoslav[dot]biz/misc/psr_t[dot][dot][dot]nslation/#_PSR-0

не очень понятно каким боком автолоад к MVC
ему пофиг какая там архитектура


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Contr
Отправлено: 29 Января, 2015 - 20:04:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 202
Дата рег-ции: Окт. 2011  
Откуда: с Марса


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




http://www[dot]youtube[dot]com/watch?v=A[dot][dot][dot]7A20112CF84B2229

я постоянно рекомендую этого автора
 
 Top
GoDr
Отправлено: 29 Января, 2015 - 20:51:58
Post Id



Посетитель


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


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




я для себя написал такой класс
PHP:
скопировать код в буфер обмена
  1. spl_autoload_register(array('LAutoloader', 'Connect'));
  2.  
  3. class LAutoloader
  4. {
  5.     /**
  6.      * Инициализация класса
  7.      *
  8.      * @param string $class_name - Имя файла класса
  9.      *
  10.      * @throws Exception
  11.      *
  12.      * @modification 24.01.2014 Gold Dragon
  13.      */
  14.     public static function Connect($class_name = '')
  15.     {
  16.         if (!class_exists($class_name)) {
  17.             if (strpos($class_name, 'Lib') === 0) { // Библиотеки : LibНазваниеКласса
  18.                 $filename = strtolower(substr($class_name, 3));
  19.                 $path = _LPATH_LIBRARIES . '/' . $filename . '/' . $filename . '.php';
  20.             }elseif(preg_match('#^L[A-Z]+#', $class_name)){ // Ядро системы : LНазваниеКласса
  21.                 $filename = strtolower(substr($class_name, 1));
  22.                 $path = _LPATH_ROOT . '/core/' . $filename . '.php';
  23.             }else{
  24.                 $path = null;
  25.             }
  26.             if(!is_null($path)){
  27.                 self::includeClass($class_name, $path);
  28.             }
  29.         }
  30.     }
  31.  
  32.     /**
  33.      * Подключение файла с классом
  34.      *
  35.      * @param $class_name
  36.      * @param $path
  37.      *
  38.      * @throws Exception
  39.      *
  40.      * @modification 24.01.2014 Gold Dragon
  41.      */
  42.     private static function includeClass($class_name, $path){
  43.         if(file_exists($path)){
  44.             require_once($path);
  45.             if(!class_exists($class_name)){
  46.                 throw new Exception(sprintf("The uploaded file <b>%s</b> class <b>%s</b> not found", $path, $class_name));
  47.             }
  48.         }else{
  49.             throw new Exception(sprintf("Not found the file <b>%s</b> with the class <b>%s</b>", $path, $class_name));
  50.         }
  51.     }
  52. }


Подключаем файлик и всё работает
Я использую подключение для двух вариантов
1. Это часть ядра
2. Это библиотеки
Соответственно файлы (классы) в разных папках


-----
Система управления веб-содержимым Lotos CMS
 
 Top
DelphinPRO
Отправлено: 30 Января, 2015 - 02:16:22
Post Id



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


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


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




GoDrчто-то как-то сложно Улыбка нэймспэйсы - наше всё )


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
armancho7777777 Супермодератор
Отправлено: 30 Января, 2015 - 06:28:01
Post Id



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


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




juramaj пишет:
Может есть ссылка на источник где это всё реализовано.

http://zf2[dot]com[dot]ua/doc/34
 
 Top
GoDr
Отправлено: 30 Января, 2015 - 08:04:29
Post Id



Посетитель


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


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




DelphinPRO, моя CMS без нэймспэйсов. Если честно, то пока не осознал в них потребность. Т.е. не вижу необходимости из-за этого "полумифического" функционала переписывать на данном этапе движок Закатив глазки И даже сегодня я не вижу особых плюсов в них


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Мелкий Супермодератор
Отправлено: 30 Января, 2015 - 08:32:00
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




GoDr пишет:
пока не осознал в них потребность

Вот потребность:
GoDr пишет:
// Библиотеки : LibНазваниеКласса

Пространство имён Lib, эмулируемое стандартом кодирования и наименования классов.


-----
PostgreSQL DBA
 
 Top
GoDr
Отправлено: 30 Января, 2015 - 09:38:42
Post Id



Посетитель


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


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





Мелкий, это я понял, да и знал Улыбка Уже пару раз пытался перевести движок на это. Начинаю делать и понимаю что затраченное время не окупается вообще никак, уж очень маленькое преимущество Закатив глазки Может ещё раз попробую


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


Гость


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


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




Спасибо всем за рекомендации. Сейчас буду разбираться.
(Добавление)
caballero пишет:
http://svyatoslav[dot]biz/misc/psr_t[dot][dot][dot]nslation/#_PSR-0

не очень понятно каким боком автолоад к MVC
ему пофиг какая там архитектура

Так у меня же у маршрутизаторе прописано подключение. Вот как у меня выглядит маршрутизатор.
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.             include "application/models/".$model_file;
  21.         }
  22.         $controller_file = strtolower($controller_name).'.php';
  23.         $controller_path = "application/controllers/".$controller_file;
  24.         if(file_exists($controller_path)){
  25.             include "application/controllers/".$controller_file;
  26.         } else {
  27.             Route::ErrorPage404();
  28.         }
  29.         $controller = new $controller_name;
  30.         $action = $action_name;
  31.         if(method_exists($controller, $action)){
  32.             $controller->$action();
  33.         } else {
  34.             Route::ErrorPage404();
  35.         }
  36.     }
  37.  
  38.     static function ErrorPage404()
  39.     {
  40.         echo "<img src='images/404.png' alt='404'>";
  41.     }
  42. }
 
 Top
esterio
Отправлено: 30 Января, 2015 - 12:09:01
Post Id



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


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


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




juramaj пишет:
static function ErrorPage404()
{
echo "<img src='images/404.png' alt='404'>";
}


И опять эта статья. Уже в который раз вижу на форуме с ней проблемы в новичков
 
 Top
juramaj
Отправлено: 30 Января, 2015 - 12:39:50
Post Id


Гость


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


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




esterio пишет:
juramaj пишет:
static function ErrorPage404()
{
echo "<img src='images/404.png' alt='404'>";
}


И опять эта статья. Уже в который раз вижу на форуме с ней проблемы в новичков

Так а какое решение этой проблемы? Может подскажите.
 
 Top
GoDr
Отправлено: 30 Января, 2015 - 13:18:11
Post Id



Посетитель


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


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




Кстати, про namespace ... А что-то я не могу свой код переделать.

Кто работает с namespace, поясните что необходимо сделать и как подгружать

Допустим есть две категории классов
- ядро : namespace CORE
- библиотеки : namespace LIBRARIES

В ядре классы LXxxxXxxx
В библиотеках LibXxxxXxxx

Как правильно реализовать загрузчик? Что-то у меня с путями проблемы появились Недовольство, огорчение


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



Участник


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


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




GoDr, вот простейший пример, как оно выглядит:
PHP:
скопировать код в буфер обмена
  1. namespace application\vendor\lib\name;
  2.  
  3. class className {
  4.    
  5.     static public function getMyName() {
  6.         return __CLASS__;
  7.     }
  8. }
  9.  
  10. $r = className::getMyName();
  11.  
  12.  

Соответственно можно (или нужно) преобразовывать для autoloader'а пути до файла с классом, опираясь на его полное имя...
(Добавление)
PS: подробности.... (если вдруг) Улыбка
 
 Top
juramaj
Отправлено: 30 Января, 2015 - 13:56:45
Post Id


Гость


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


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




Как избавится в маршрутизаторе на mvc от include, а вместо этого реализовать функцию autoload для загрузки классов. Вот мой маршрутизатор:
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.             include "application/models/".$model_file;
  21.         }
  22.         $controller_file = strtolower($controller_name).'.php';
  23.         $controller_path = "application/controllers/".$controller_file;
  24.         if(file_exists($controller_path)){
  25.             include "application/controllers/".$controller_file;
  26.         } else {
  27.             Route::ErrorPage404();
  28.         }  
  29.        $controller = new $controller_name;
  30.         $action = $action_name;
  31.         if(method_exists($controller, $action)){
  32.             $controller->$action();
  33.         } else {
  34.             Route::ErrorPage404();
  35.         }
  36.     }
  37.     static function ErrorPage404()
  38.     {
  39.         echo "<img src='images/404.png' alt='404'>";
  40.     }
  41. }
 
 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