Перейти к основному содержимому

Использование интерфейсов и черт

В некоторых случаях может быть полезно позволить сгенерированному классу 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";
...


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.