Как кодировать в ОО PHP? - PullRequest
       36

Как кодировать в ОО PHP?

0 голосов
/ 02 февраля 2010

Как я могу сделать это в OO PHP:

  1. Форма ('in newstudent.php') просит пользователя ввести его имя, курс и год.
  2. После выбора кнопки «Отправить», страница перейдет к «records.php» records.php - содержит таблицу, в которой отображаются все записи (столбцы: имя, курс, год)
  3. когда пользователь выбирает «Отправить», новая запись будет добавлена ​​в базу данных, в которой есть таблица с именем STUDENTS

код SQL

CREATE TABLE STUDENTS(
   NAME VARCHAR(25) NOT NULL,
   COURSE VARCHAR(25) NOT NULL,
   YEAR INT NOT NULL,
CONSTRAINT STUDENTS_PK PRIMARY KEY(NAME));

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

а также ... Как я могу манипулировать данными в БД с помощью OO PHP? Спасибо

Ответы [ 3 ]

5 голосов
/ 02 февраля 2010
  1. Читать книгу
  2. Поиск в Google
  3. Создать объект ученика
  4. Создать объект базы данных
  5. Запрос объекта базы данных для вставки объекта ученика
1 голос
/ 02 февраля 2010

Что ж, если вы хотите перейти к ОО-методу представления студентов в базе данных, как насчет класса «Студент», который выглядит примерно так, как указано ниже (хотя это очень простой способ, и никак не полная 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, но если это не вариант, вы можете написать свою собственную.

0 голосов
/ 02 февраля 2010

Может быть, вы говорите о ORM - паттернах сопоставления объектов? Существует много разных подходов для преобразования сопоставленных объектов данных SQL в классы PHP: Propel, Doctrine (оба могут использоваться с платформой Symfony), ActiveRecord.

Конечно, вы можете попробовать внедрить собственную систему ORM. Вам необходимо написать слой доступа к данным для этого ORM, классы, которые описывают таблицы SQL и многое другое. Это очень интересно (в образовательных целях).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...