Php 这是生成器模式的正确用法吗

Php 这是生成器模式的正确用法吗,php,laravel,design-patterns,builder,Php,Laravel,Design Patterns,Builder,我有这样一个场景: $data= json_decode($result->jsonData); $reservation = (new Reservation()) ->setOtaReference($data->otaReference) ->setCheckin($data->checkin) ->setCheckout($data->ch

我有这样一个场景:

$data= json_decode($result->jsonData);
$reservation = (new Reservation())
                  ->setOtaReference($data->otaReference)
                  ->setCheckin($data->checkin)
                  ->setCheckout($data->checkout); //...etc
该系统处理来自两个不同来源的预订。所有预订都是json格式的,每个源的格式都不同。一些JSON属性存在于一个JSON中,而不存在于另一个JSON中,等等

为了将保留输入到系统中,我尝试将添加保留逻辑集中到一个方法中。为此,我尝试使用生成器模式创建一个名为Reservation的类,如下所示:

<?php

namespace App\Business\Classes\Reservation;


use App\Business\Classes\Utils\ReservationUtils;

/**
 * Class Reservation
 * Holds entire reservation details
 * @package App\Business\Classes\Reservation
*/
class Reservation
{
    protected $reference, $otaReference, $hotelCode, $customerId, $guestName, $couponId, $checkin, $checkout, $guests, $customerCountry,
    $commissionRate, $paymentStatus, $commissionOta, $commissionDifference, $rooms = [], $cityTax, $vat, $serviceCharge, $geniusBooker = false,
    $geniusAmount = 0, $taxes, $taxIncluded = false, $supplierAmount, $totalAmount, $specialRequest, $currency, $deviceType, $bookingSource,
    $otaRefId, $status, $source, $remarks;

    public function __construct()
    {
        // generates a reference
        $this->reference = ReservationUtils::referenceGenerator();
    }

     /**
      * @param mixed $otaReference
      * @return Reservation
     */
     public function setOtaReference($otaReference): Reservation
     {
        $this->otaReference = $otaReference;
        return $this;
     }

     /**
      * @param mixed $checkin
      * @return Reservation
     */
     public function setCheckin($checkin): Reservation
     {
        $this->checkin = $checkin;
        return $this;
     }

     /**
      * @param mixed $checkout
      * @return Reservation
     */
     public function setCheckout($checkout): Reservation
     {
        $this->checkout = $checkout;
        return $this;
     }

     /**
      * @param array $rooms
      * @return Reservation
     */
     public function setRooms(array $rooms): Reservation
     {
        $this->rooms = $rooms;
        return $this;
     }
     // and so on....
}
这可能不是PHP甚至Java中builder模式的教科书用法,但它有什么问题吗


谢谢

除了setXXX系列之外,还有哪些预订类的有用方法?@NghiaBui-Hi。是的。。最后,Reservation类有一个名为
processReservation(){}
的方法,该方法基本上从Reservation类(自身)提取数据,并将其映射到一个雄辩的模型除了setXXX?@NghiaBui-Hi之外,Reservation类还有哪些有用的方法。是的。。最后,Reservation类有一个名为
processReservation(){}
的方法,它基本上从Reservation类(本身)提取数据,并将其映射到一个有说服力的模型