Что ж, если вы хотите перейти к ОО-методу представления студентов в базе данных, как насчет класса «Студент», который выглядит примерно так, как указано ниже (хотя это очень простой способ, и никак не полная ORM) ). Это займет у вас полпути к подходу в стиле ActiveRecord .
Обратите внимание, что я предполагал, что вы будете использовать столбец целочисленного идентификатора, но это не раздражает весь класс.
class Student {
var $id = -1;
var $name;
var $course;
var $year;
public static function newFromID ($id)
{
//fetch a row ($row) from the students table matching the given id
//perhaps returning false if the student doesn't exist?
return self::newFromRow($row);
}
// this method should return a new student object given a specific db row
// and should be called from newFromID. This function means that if the table
// changes, modifications only have to be made in one place
public static function newFromRow($row)
{
$obj = new Student();
//fill in the fields of the object based on the content of the row
return $obj;
}
public static function getAllStudents()
{
//perhaps return an array of student objects, by doing a broad select,
//and passing each row to newFromRow?
}
//this should save the object to the database, either inserting or updating as appropriate
public function save()
{
if($this->id == -1)
{
//insert, store the auto_increment id in $this->id
} else {
//update
}
}
}
Итак, чтобы создать нового ученика и сохранить его в базе данных:
$student = new Student();
$student->name = "John Smith";
$student->course = "French";
$student->year = 2;
$student->save();
В действительности, часто более разумно использовать существующую систему ORM, но если это не вариант, вы можете написать свою собственную.