powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: метаинформация в комментариях класса
9 сообщений из 9, страница 1 из 1
PHP: метаинформация в комментариях класса
    #39105013
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С PHP приходится сталкиваться только от случая к случаю.
И обычно нужно решить конкретную задачу поскорее и любым подходящим способом.
В одной из задач мне нужно работать с объектами в базе данных, для чего у меня используется набор классов, представляющих собой сущности базы данных.
Мне показалось удобным оформлять эти классы примерно так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
class Payment
{

    use SqlBinding;

    public $id;                 // DB-MAPPING:
    public $clock;              // DB-MAPPING: PAYMENT_CLOCK
    public $error;
    public $reqClock;           // DB-MAPPING: REQ_CLOCK
    public $reqType;            // DB-MAPPING: REQ_TYPE
    public $reqAccount;         // DB-MAPPING: REQ_ACCOUNT
    ...
    public $storno;             // DB-MAPPING: STORNO
    public $stornoClock;        // DB-MAPPING: STORNO_CLOCK
    public $stornoReason;       // DB-MAPPING: STORNO_REASON
    public $stornoOriginator;   // DB-MAPPING: STORNO_ORIGINATOR
    public $refAgent;           // DB-MAPPING: .id PAYMENT_AGENT_ID
    public $refRegistry;        // DB-MAPPING: .id PAYMENT_REGISTRY_ID
    public $refCustomer;
    public $refAccount;
...
}


Здесь SqlBinding это трейт, который считывает php-файл класса, находит в них подходящие строки (публичное свойство, у которого есть комментарий // DB-MAPPING:) и синхронизирует данные класса с базой данных; если после комментария указано слово, то оно считается именем поля, если после комментария указано два слова, первое из которых начинается с точки, значит это внешний ключ (имя столбца с FK во втором слове), который в классе представлен другим классом (имя мембера в первом слове). Для сохранения данных из класса в БД я вызываю метод класса save, для загрузки данных из БД в класс я вызываю метод класса load.

Или может быть я велосипед изобретаю?
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
PHP: метаинформация в комментариях класса
    #39105239
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.,
Так вроде для работы с БД существуют шаблоны ActiveRecord, DataMapper
...
Рейтинг: 0 / 0
PHP: метаинформация в комментариях класса
    #39105245
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

да, велик с квадратными колесами.

если нужен маппинг, есть куча всяких doctrine, propel...
плюс щас в каждом уважающем себя современном фреймворке есть ORM библиотеки на любой вкус.
...
Рейтинг: 0 / 0
PHP: метаинформация в комментариях класса
    #39105320
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто маппинг мне не нравится тем, что нужно в программном коде дублировать структуру базы данных.
Мне показалось, что подобная "самодокументация" более удобна.
Или я просто не проникся идеями ORM?
...
Рейтинг: 0 / 0
PHP: метаинформация в комментариях класса
    #39105352
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не хочу строить дом из кирпичей и цемента. Я сделаю свои кирпичи из картона, заполненные наполнителем из плюшевых мишек, буду склеивать их сгущенкой и ставить ромбиком..
...
Рейтинг: 0 / 0
PHP: метаинформация в комментариях класса
    #39105535
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПросто маппинг мне не нравится тем, что нужно в программном коде дублировать структуру базы данных.
ну можешь сделать разбор типов и названий колонок, полученных из базы.
...
Рейтинг: 0 / 0
PHP: метаинформация в комментариях класса
    #39105540
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторесли после комментария указано слово, то оно считается именем поля, если после комментария указано два слова, первое из которых начинается с точки, значит это внешний ключ


http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference/annotations.html
https://github.com/doctrine/common
...
Рейтинг: 0 / 0
PHP: метаинформация в комментариях класса
    #39105556
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow http://docs.doctrine-project.org/projects/doctrine-common/en/latest/reference/annotations.html
Выглядит жутко.
Но за ссылку спасибо, теперь понятно, к чему придет мой велосипед, если его делать универсальным и доводить до ума.
В своем текущем виде им пользоваться просто, вот на такой стадии его и оставлю.
...
Рейтинг: 0 / 0
PHP: метаинформация в комментариях класса
    #39105583
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
// src/AppBundle/Entity/Product.php
namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="product")
 */
class Product
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=100)
     */
    protected $name;

    /**
     * @ORM\Column(type="decimal", scale=2)
     */
    protected $price;

    /**
     * @ORM\Column(type="text")
     */
    protected $description;
}
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: метаинформация в комментариях класса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]