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 :: Вывод результатов работы модулей [3]

 PHP.SU

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


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

> Описание: Помогите с реализацией
Hapson
Отправлено: 17 Августа, 2013 - 14:02:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


caballero пишет:
ну так пусть кадждый модуль и регистрирует свою функцию автолоада

Ну да, можно и так. Да вообще вариантов теперь куча, я не знал про spl_autoload_register.
Так значит __autoload в будущем будет удален?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
caballero
Отправлено: 17 Августа, 2013 - 14:33:41
Post Id


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


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


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




не будет
большинство сайтов не требуют кучи собственных автолоадов


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Hapson
Отправлено: 17 Августа, 2013 - 15:42:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


caballero пишет:

большинство сайтов не требуют кучи собственных автолоадов

Да?
Значит я все усложняю? Можно скидывать все классы в одну директорию?
Только наверное нужно изучить реализацию пространства имен?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
caballero
Отправлено: 17 Августа, 2013 - 16:24:45
Post Id


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


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


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




если вы хотите разделить приложение на модули то скидывать все в одну папку как то странно

опять же даже если классы в разных папках можно написать автолоад и одной функцией. Только классы должны лежать в модулях однообразно по одинаковому пути чтобы функция знала где их искать имея только список модулей


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Hapson
Отправлено: 17 Августа, 2013 - 18:45:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


caballero пишет:
если вы хотите разделить приложение на модули то скидывать все в одну папку как то странно

опять же даже если классы в разных папках можно написать автолоад и одной функцией. Только классы должны лежать в модулях однообразно по одинаковому пути чтобы функция знала где их искать имея только список модулей

Ну да, у меня как бы деление на модули. А как иначе? Нужно же как-то распределить файлы по каталогам, чтобы не сваливать все в кучу

С классами понятно. Да, можно и один автолоад иметь, только реализовать поиск в разных каталогах. Главное чтобы автолоад от этого не стал медленно работать


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
DelphinPRO
Отправлено: 17 Августа, 2013 - 18:52:40
Post Id



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


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


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




Hapson пишет:
Ну да, у меня как бы деление на модули. А как иначе? Нужно же как-то распределить файлы по каталогам, чтобы не сваливать все в кучу

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

Hapson пишет:
Да, можно и один автолоад иметь, только реализовать поиск в разных каталогах.

Можно. Дело вкуса. У меня два. Один для загрузки классов ядра, второй - для загрузки расширений.

Поясню.
Ядро лежит в папке system/core/*. Классы имеют имена типа (с неймспейсами)
\d\mvc\Controller
\d\db\Database
Расширения лежат в папке system/extensions/*. Классы имеют имена
\d\users\UsersController
\d - это типа вендор Улыбка
Таким образом в первом загрузчике я заменяю \d на /system/core
во втором соответственно на /system/extensions, получая адрес файла.
Да, можно было все сделать в одном обработчике, примерно так

PHP:
скопировать код в буфер обмена
  1. function __autoload() {
  2.   if (file_exists($filename = str_replace('\\d', '/system/core', $classname))) {
  3.     require $filename;
  4.   } elseif (file_exists($filename = str_replace('\\d', '/system/extensions', $classname))) {
  5.     require $filename;
  6.   }
  7. }

и ничего страшного в этом нет. Но мне такое решение кажется некрасивым, и я регистрирую два обработчика автолоада
PHP:
скопировать код в буфер обмена
  1. public function coreAutoLoad($classname) {
  2.   if (file_exists($filename = str_replace('\\d', '/system/core', $classname))) {
  3.     require $filename;
  4.   }
  5. }
  6. public function extensionsAutoLoad($classname) {
  7.   if (file_exists($filename = str_replace('\\d', '/system/extensions', $classname))) {
  8.     require $filename;
  9.   }
  10. }

(Отредактировано автором: 17 Августа, 2013 - 19:05:16)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Hapson
Отправлено: 17 Августа, 2013 - 23:14:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


DelphinPRO
Не очень понятно, но сейчас изучу пространство имен и пойму
Чтобы не писать много, давайте я скину папку своего "проекта", а вы посмотрите - это модульная структура или это просто распихано по папкам для удобства
Скачать файл: blog.rar
Скачан раз: 20


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Hapson
Отправлено: 18 Августа, 2013 - 07:45:27
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


DelphinPRO пишет:
caballero пишет:
человек и так запутался в собственном изделии а вы ему еще ACL, CRUD, ядра и прочие страшные слова.
Hapson пишет:
Понятно
Значит у меня ядро это папка classes, в которой лежат классы.

ну вот, с одним "страшным" словом мы разобрались Улыбка

Нет у меня ядра нифига... Есть у меня каша - куча-мала. Авторизация проверяется в процессе загрузки шаблона, и то, если включен модуль.
Надо переделывать немного.
Я так понимаю, нужно сделать какую-то папку, например Engine или Core и там сделать папку classes. Там складировать классы, без которых нет сайта:
Users - работа с пользователями, сессии
DB - работа с бд (возможно не только mysql, но и sqlite или вообще файлы)
Router - обработчик запросов
Cache - кеширование (не знаю че кешировать, но потом наверное дойдет и это до меня)

Ну как-то так.
В папке Core также сделать папку extensions - туда запихать функционал для работы со статьями и пользователями - users и articles

В корне создать папку Modules, в которой можно например сделать модуль Comments, Sitemap, Banners...

ЧПУ сделать в ядре по-умолчанию - зачем сайт без ЧПУ

Ну вообщем как-то так я вижу
(Добавление)
PS
Я так думаю (так я вижу), что в index.php нужно написать что-то типа
Engine::getInstance()->run();

В классе engine запустится роутер, который возможно сразу выкинет 404 - тогда дальше ниче делать и не надо
Если нет 404, то запустится класс Users, который проверит авторизацию
Ну а дальше уже загрузка шаблона


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
DelphinPRO
Отправлено: 18 Августа, 2013 - 13:43:42
Post Id



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


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


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




Уже лучше, но вы старайтесь не усложнять на первом этапе разработки. Напишите минимальную функционирующую систему без всяких наворотов. Но придерживаясь своей задуманной архитектуры. А потом уже будете дописывать остальные части.
Иначе ваша разработка затянется на долгие, долгие годы... Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Hapson
Отправлено: 18 Августа, 2013 - 13:48:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


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

[+]


DelphinPRO пишет:
Уже лучше, но вы старайтесь не усложнять на первом этапе разработки. Напишите минимальную функционирующую систему без всяких наворотов. Но придерживаясь своей задуманной архитектуры. А потом уже будете дописывать остальные части.
Иначе ваша разработка затянется на долгие, долгие годы... Улыбка

Да, я об этом уже подумал.
Изначально была цель написать блог и в нем писать записи о процессе моего обучения.
Теперь вот все идет не к блогу, а к какому-то универсальному приложению.
Уже подумываю на wordpress блог завести )))


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 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