Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Подключение модулей

#11 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 16 Ноябрь 2009 - 23:09

блин я в классах не секу :)
  • 0

#12 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 16 Ноябрь 2009 - 23:41

sc2r2bey, там все строчки расписаны. В классах и сечь нечего.

Всё что находится между
class NameClass {

и закрывающей скобкой
}

Является определением класса.

Рассмотрим на примере из жизни.
Вот, примерно, в 6 классе по Биологии мы проходили царства:
Растения
Животные
Грибы
...
Всё это классы. Важно также понимать что эти классы очень обширны и чтобы описать на основе к примеру класса гриба: мухомор, нам надо будет определить множество лишних параметров(состояний, переменных), которых возможно нет у других грибов. Для упрощения подобных ситуаций и было введено понятие наследования. Когда один класс(ребёнок) может наследовать часть от родителя, но так же описывать в себе что-то новое, расширяющее.

Понятие класса тесно связано с объектом.
Класс - это изначальная заготовка представления объекта(его состояний и действий(методов)). Объект уже физическая единица созданная на основе класса. В ней уже определены все эти состояния.

Например:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
КЛАСС
Нам в нём может говориться что гриб имеет название, описание, цвет шляпки и так далее.

ОБЪЕКТ
В нём уже явно эти параметры указаны, что гриб называется "Подберёзовик", что это "такой-то такой-то гриб", цвет шляпки "Коричневый".
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
То есть имея класс "Грибы" мы можем на основе него создать много много объектов: "Подберёзовик", "Подосиновик", "Мухамор", "Опёнок" и так далее.
  • 0

#13 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 17 Ноябрь 2009 - 11:25

я не совсем понял как данный скрипт понимает какой модуль подключать, т.е. как ведется прослушка?
  • 0

#14 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Ноябрь 2009 - 13:10

sc2r2bey, Просто изначально в index.php запускается функция jinsert с параметрами, которая подключает модули из определённой папки, указанной в первом параметре. Так же можно сделать фильтр по дочерним папкам по префиксу. Также хотел сделать возможность необязательной передачи массива с допустимыми именами, но этого не доделал.

Вообщем при вызове jinsert вызывается статический метод класса _InsertModules с именем insert (метод, это таже функция, но она относится к классу и производит действия над состояниями объекта. В нашем же примере класс _InsertModules объектов не имеет, а к методам мы обращаемся через оператор расширения видимости ::).
Данный метод insert вышеуказанного класса подключает все модули из указанной папки.

Далее мы эти модули можем использовать, я специально разработал класс Module, хоть можно было и без него просто вызывать модуль как вызов функции, которая исполняет действия модуля, в нашем примере это "module_template". Просто я делаю представление этого вызова структурированным. Мы сначала создаём объект класса Module с параметрами:
1) Имя вызываемой функции модуля (строка)
2) Параметры которые мы хотим в неё передать (массив)

Замечание
Заметим что класс подключения модулей тесно привязан к структуре папки модулей. Сразу замечу, что система просто считывает все каталоги из указанной папки, потом фильтрует их по префиксу, затем в каждой папке ищет имя файла, как имя папки модуля без префикса и подключает его в проект.
То есть структура должна быть такой
modules
   mod_name1
	  name1.php
	  .... // другие файлы, которые включает модуль
   mod_name2
	  name2.php
	  .... // другие файлы, которые включает модуль
   ...........................
   mod_nameN
	  nameN.php
	  .... // другие файлы, которые включает модуль

  • 0

#15 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 17 Ноябрь 2009 - 13:20

ну а как это с меню увезать ведь на разных страницах нужны разные модули?
  • 0

#16 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Ноябрь 2009 - 13:28

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

Допустим у нас есть система, которая поключает файлы в index.php зависимости от запроса: my1.php , my2.php , ... , myN.php
Например в файле my1.php я хочу вызвать модуль mod_name1 (тут ещё главное знать как называется инициализирующая функция модуля, которая всё исполняет. Конечно можно было сделать структуру, которая бы привязывала имя исполняемой главной функции с именем модуля, я этого не сделал)
<?php
// делаем что-то

$name1Module = new module("module_name1", [Параметры]);
$name1Module->call(); // вызвать модуль
echo $name1Module->getReturn(); // получить результат работы модуля
?>


Например в файле my2.php я хочу вызвать модуль mod_name2
<?php
// делаем что-то

$name2Module = new module("module_name2", [Параметры]);
$name2Module->call(); // вызвать модуль
echo $name2Module->getReturn(); // получить результат работы модуля
?>

  • 0

#17 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 17 Ноябрь 2009 - 13:51

просто все классы подключать это не размуно.
  • 0

#18 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Ноябрь 2009 - 20:18

sc2r2bey, я же сказал, что система простая, не хотите так, надо думать, мне писать сложные системы времени не хватает.
  • 0

#19 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 17 Ноябрь 2009 - 21:28

писать-то не надо, сама идея как это сделать :)

можули можно разделить на 2 группы, те которые подключаются через коммандную строку, делается прослушка и все ок, и как правило они привязаны к ссылка.
это как правило это контент, например стать, новости, гостевая, галерея и т.д.
а вторая которые невозможно подключить через коммандную строку, например само меню, форуме регистрации и т.д.

т.е. должно быть как минимум 2 способа прослушки и подключения модулей.

и встает еще вопрос, каким образом вставлять модули 2 типа?
  • 0

#20 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 17 Ноябрь 2009 - 23:42

sc2r2bey, что за командная строка, выражайтесь корректными терминами. Командная строка - это вообще-то общение с системой посредством ввода команд, и при чём тут движок?
Возможно вы имели ввиду подключение в коде через выполнение определённой конструкции.

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

ничего не понятно...
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru