Класс PHP. Как структурировать метод для сохранения данных в базе данных - PullRequest
1 голос
/ 14 февраля 2011

Я создаю класс для сохранения данных в базе данных, но у меня нет идей, как с этим справиться ...

У меня есть папки с проектами, подобные этой:

+Lib
+Models
    +Uddt
    -person.php
-uris.php
Main_class.php
Example_usage.php

В папке «Models» есть файл uris.php, в котором есть методы для добавления и извлечения информации из таблиц базы данных.

В папке «Models \ Uddt» есть определенные пользователем типы данных, которые у меня есть.определенный, например, person.php выглядит следующим образом:

class Person {

    static $id_category = '2';

    public $uri;

    public $name;
    public $age;
    public $sex;
    public $address;
    public $country;

public function _Name() {
    // Connect the property name to the db name
    $db_name = 'name_in_db';

    // Some more code
}

public function _Age() {
    // Connect the property name to the db name
    $db_name = 'age_in_db';

    // Some more code
}

    public function save() {
        // do things to save the data to the database
    }

}

Таблицы базы данных выглядят так:

Table(uris_details)
uri             (PK FK)
id_category     (PK FK)
id_data_type    (PK FK)
n_text

Table(uris)
uri             (PK)
id_uri_state    (FK)

Для вставки данных в базу данных я хочу использоватьобъект, вот так:

// Instantiate the object
$p = new Person;

// Add the values to the object
$p->uri     = 'http://www.fdsddd.com/gfd1';
$p->name    = 'John';
$p->age     = '27';
$p->sex     = 'Male';
$p->address = '10 Street';
$p->country = 'USA';

// Save the data to the database
$p->save(); 

Вставки будут выглядеть так:

INSERT INTO uris (uri, id_uri_state) VALUES ('http://www.fdsddd.com/gfd1', 'active');
INSERT INTO uris_details (uri, id_category, id_data_type, n_text) VALUES ('http://www.fdsddd.com/gfd1', '2', 'name_in_db', 'John');
INSERT INTO uris_details (uri, id_category, id_data_type, n_text) VALUES ('http://www.fdsddd.com/gfd1', '2', 'age_in_db', '27');
INSERT INTO uris_details (uri, id_category, id_data_type, n_text) VALUES ('http://www.fdsddd.com/gfd1', '2', 'sex_in_db', 'Male');
INSERT INTO uris_details (uri, id_category, id_data_type, n_text) VALUES ('http://www.fdsddd.com/gfd1', '2', 'address_in_db', '10 Street');
INSERT INTO uris_details (uri, id_category, id_data_type, n_text) VALUES ('http://www.fdsddd.com/gfd1', '2', 'country_in_db', 'USA');

Мой вопрос:

Как мне структурировать функцию "save ()"метод в классе «Персона» для сохранения данных в базе данных, есть идеи?Я должен сделать транзакцию?Я использую PostgreSQL, лучше ли будет создать функцию PlPgSQL для обработки транзакции?

Дайте мне несколько подсказок.

С наилучшими пожеланиями,

...