Использование интерфейсов и черт
В некоторых случаях может быть полезно позволить сгенерированному классу PHP для объектов данных реализовать интерфейсы или добавить некоторые дополнительные функции с использованием признаков.
Пример
В этом примере используется демонстрационный проект, чтобы показать использование этих функций.
Мы расширяем класс Cars с помощью методов для извлечения типа передачи, а также количества передач. Это будет сделано путем реализации интерфейса и черты, которая добавляет необходимые методы.
Создать интерфейс
<?php
// src/Model/Product/TransmissionInterface.php
namespace App\Model\Product;
interface TransmissionInterface
{
public function getGearboxType(): ?string;
public function getNumberOfGears(): ?int;
}
Create the trait
Returns a GearboxType and a number of gears.
<?php
// src/Traits/TransmissionTrait.php
namespace App\Traits;
trait TransmissionTrait
{
public function getGearboxType(): ?string
{
return "manual";
}
public function getNumberOfGears(): ?int
{
return 5;
}
}
Use it with Cars product data
Navigate to the Settings Settings -> Data Objects -> Classes -> Product Data -> Car
Click on General Settings and paste your interface and trait path into Implements interface(s) and Use (traits)
{P0}
Save your changes
It will generate the implements \App\Model\Product\TransmissionInterface and the
use \App\Traits\TransmissionTrait; lines within the DataObject Class.
// var/classes/DataObject/Car.php
...
class Car extends \App\Model\Product\AbstractProduct implements \App\Model\Product\TransmissionInterface {
use \App\Traits\TransmissionTrait;
protected $classId = "CAR";
protected $className = "Car";
...
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.