Очень грубо: вот как бы я это сделал:
Храните ваши данные в SQL или XML. Вам понадобятся две таблицы SQL, одна для студентов и одна для курсов. Вы можете использовать один файл XML, содержащий все данные, или два файла (которые я рекомендую).
Создайте класс с именем, например, dataItem
со свойством типа '$ arr_fields', соответствующим одной записи данных (одной строке в таблице SQL или записи XML).
Класс dataItem должен иметь следующие методы (все открытые):
loadFromSQL()
(или loadFromXML()
)
- saveToSQL () (или saveToXML ())
add()
, edit()
и delete()
- a
view()
метод с использованием HTML
- Эти методы, очевидно, используются для чтения и записи данных между данными SQL / XML и $ arr_fields класса, а также для отображения данных в $ arr_fields. Ключами $ arr_fields являются имена столбцов SQL (или теги XML или имена атрибутов) для конкретной таблицы SQL.
Старайтесь не вызывать loadFromSQL () или saveToSQL () в своем конструкторе или в любом другом методе, который используется для изменения только данных класса. Храните эти действия отдельно. РЕДАКТИРОВАТЬ: Это личное предпочтение, которое помогает мне отслеживать состояние моих объектов.
Создание классов учеников и курсов, расширяющих класс dataItem.
Вы можете переопределить методы, например, метод view()
, внутри ваших расширенных классов, если вам нужно.
Затем вы можете вызывать методы в Студентах и Курсах из объекта Admin (как предложено rcdmk) или, возможно, из классов StudentFolder и CourseFolder, метод view () которых содержит кнопки для действий, которые необходимо выполнить. (Пусть StudentFolder и CourseFolder расширяют создаваемый вами класс Folder.)
ОБНОВЛЕНИЕ:
Например: если ваш первичный ключ в таблице SQL равен id
, то loadFromSQL ($ id, $ tablename) dataItem должен установить $ arr_fields так, чтобы его ключами были имена столбцов, а его значениями были значения из строки первичное значение которого равно $ id.
В Студентах вы можете затем переопределить loadFromSQL () следующим образом:
class Students extends dataItem {
// other attributes
public function loadFromSQL($id) {
parent::loadFromSQL($id, "Students");
}
}
EDIT: При повторном рассмотрении может быть лучше установить $ arr_fields ["id"] = $ id, а также установить $ tablename с помощью конструктора для dataItem - тогда вам никогда не придется переопределять loadFromSQL () или указывать параметры для него. loadFromSQL () должен загрузить запись, если она существует. saveToSQL () должен сохранить $ arr_fields в SQL, если установлено значение $ arr_fields ["id"], и создать новую запись, если она не установлена. В любом случае, вы должны найти согласованный способ взаимодействия с данными, который работает для вас, это всего лишь возможности.
Однако, если у вас нет опыта работы с ООП и SQL или XML, возможно, вы открываете банку с червями для себя, и может быть лучше просто выполнить свое назначение, используя только функции и массивы php для ваших данных. Если у вас нет времени учиться ...