Как правильно смапить PHP класс с Doctrine?

Смапить (от английского слова "mapping") PHP класс с Doctrine означает настроить отображение структуры базы данных на структуру объектно-ориентированного класса в PHP, чтобы обеспечить удобное взаимодействие между кодом приложения и базой данных.

Для начала необходимо создать PHP класс, который будет представлять таблицу базы данных. Для этого используется аннотации Doctrine. Пример класса с аннотациями Doctrine:

<?php
use DoctrineORMMapping as ORM;

/**
 * @ORMEntity
 * @ORMTable(name="products")
 */
class Product
{
    /**
     * @ORMId
     * @ORMGeneratedValue
     * @ORMColumn(type="integer")
     */
    private $id;

    /**
     * @ORMColumn(type="string")
     */
    private $name;

    /**
     * @ORMColumn(type="decimal", precision=10, scale=2)
     */
    private $price;
    
    // Геттеры и сеттеры
}
?>

Далее необходимо сконфигурировать Doctrine для работы с вашими классами и базой данных. Это включает в себя указание параметров подключения к базе данных, создание EntityManager и регистрация ваших классов с помощью аннотаций.

Пример инициализации Doctrine EntityManager:

<?php
require_once "vendor/autoload.php";

use DoctrineORMToolsSetup;
use DoctrineORMEntityManager;

$paths = array(__DIR__ . "/src/Entity");
$isDevMode = true;

$dbParams = array(
    'driver'   => 'pdo_mysql',
    'user'     => 'root',
    'password' => 'root',
    'dbname'   => 'mydb',
);

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);
?>

Теперь вы можете использовать Doctrine для выполнения запросов к базе данных, сохранения объектов и других операций. Например, добавление записи в базу данных:

<?php
$product = new Product();
$product->setName('Название продукта');
$product->setPrice(19.99);

$entityManager->persist($product);
$entityManager->flush();
?>

Это лишь общий пример того, как правильно смапить PHP класс с Doctrine. Для более подробной информации обратитесь к официальной документации Doctrine: https://www.doctrine-project.org/projects/doctrine-orm/en/latest/