Rumah >pembangunan bahagian belakang >tutorial php >Gunakan DTO trait PHP untuk mencapai kebolehgunaan semula dan kebolehskalaan interaksi data

Gunakan DTO trait PHP untuk mencapai kebolehgunaan semula dan kebolehskalaan interaksi data

PHPz
PHPzasal
2023-10-12 13:57:111475semak imbas

使用PHP trait DTO实现数据交互的可复用性与可扩展性

Gunakan ciri PHP DTO untuk mencapai kebolehgunaan semula dan kebolehskalaan interaksi data

Dalam pengaturcaraan berorientasikan objek, Data Transfer Object (DTO) ialah corak reka bentuk yang digunakan untuk memindahkan antara lapisan data yang berbeza. DTO boleh digunakan untuk menukar data antara lapisan yang berbeza untuk memenuhi keperluan lapisan yang berbeza, dengan itu meningkatkan kebolehskalaan dan kebolehgunaan semula kod. Dalam PHP, anda boleh menggunakan ciri untuk melaksanakan fungsi DTO.

Pertama sekali, mari kita fahami apa itu sifat. Trait ialah mekanisme yang diperkenalkan dalam PHP5.4 yang membolehkan pembangun menggunakan semula set kaedah antara kelas yang berbeza, serupa dengan berbilang warisan. Menggunakan ciri boleh mengelakkan sekatan warisan tunggal PHP dan menggabungkan kod dengan lebih fleksibel. Seterusnya, kami akan menggunakan ciri untuk melaksanakan DTO mudah.

Pertama, kami mentakrifkan kelas DTO asas bernama BaseDTO. Kelas ini mengandungi dua sifat biasa: $data dan $mapping. $data ialah tatasusunan yang menyimpan data dan $mapping ialah tatasusunan bersekutu yang menentukan nama kunci setiap atribut dalam tatasusunan $data. Kami mentakrifkan pembina biasa dalam BaseDTO, yang akan menerima tatasusunan bersekutu sebagai parameter dan menyalin pasangan nilai kunci dalam tatasusunan ke tatasusunan $data.

Berikut ialah kod BaseDTO:

class BaseDTO {
    protected $data;
    protected $mapping;

    public function __construct(array $data = array()) {
        $this->data = array();
        $this->mapping = array();

        foreach ($data as $key => $value) {
            if (isset($this->mapping[$key])) {
                $this->data[$this->mapping[$key]] = $value;
            }
        }
    }

    public function toArray() {
        return $this->data;
    }

    public function __get($name) {
        if (isset($this->mapping[$name])) {
            return $this->data[$this->mapping[$name]];
        }

        return null;
    }

    public function __set($name, $value) {
        if (isset($this->mapping[$name])) {
            $this->data[$this->mapping[$name]] = $value;
        }
    }
}

Seterusnya, kita boleh menentukan kelas DTO tertentu, seperti UserDTO. UserDTO mewarisi daripada BaseDTO dan menggunakan ciri untuk menggunakan semula beberapa kaedah biasa. Dalam UserDTO, kami mentakrifkan beberapa sifat dan menentukan hubungan antara sifat dan pemetaan dalam pembina.

Berikut ialah kod UserDTO:

require_once 'BaseDTO.php';

trait UserDTO
{
    public function getId()
    {
        return $this->id;
    }

    public function getName()
    {
        return $this->name;
    }
    
    public function getEmail()
    {
        return $this->email;
    }
}

class User extends BaseDTO
{
    use UserDTO;

    protected $id;
    protected $name;
    protected $email;

    protected $mapping = [
        'id' => 'id',
        'name' => 'name',
        'email' => 'email',
    ];
}

Selepas menggunakan ciri UserDTO, kelas Pengguna boleh terus memanggil kaedah seperti getId(), getName() dan getEmail(), yang akan mengembalikan nilai atribut yang sepadan. Pada masa yang sama, kelas Pengguna juga mewarisi kaedah toArray(), __get() dan __set() BaseDTO, menjadikan kelas Pengguna memiliki fungsi BaseDTO.

Menggunakan kelas DTO, kami boleh menghantar data antara lapisan yang berbeza seperti logik perniagaan, akses data, pandangan, dll. Dalam lapisan akses data, hasil pertanyaan pangkalan data boleh dipetakan ke objek DTO. Dalam lapisan logik perniagaan, objek DTO boleh digunakan untuk operasi data dan pemprosesan perniagaan. Pada lapisan paparan, objek DTO boleh ditukar kepada struktur data yang perlu dipaparkan.

Gunakan ciri untuk melaksanakan fungsi DTO, menjadikan kod lebih fleksibel, berskala dan boleh digunakan semula. Dengan mentakrifkan kelas dan sifat DTO yang berbeza, kami boleh menggabungkan kod secara fleksibel mengikut keperluan perniagaan untuk mencapai pembangunan yang lebih cekap.

Ringkasnya, menggunakan DTO trait PHP boleh meningkatkan kebolehgunaan semula dan kebolehskalaan kod. Dengan mentakrifkan kelas DTO asas dan menggunakan ciri untuk menggunakan semula kaedah biasa, kami boleh memindahkan data dengan mudah antara lapisan berbeza dan mengembangkan dan menyesuaikan secara fleksibel mengikut keperluan perniagaan. Corak reka bentuk ini boleh membantu kami mengatur dan mengurus kod dengan lebih baik serta meningkatkan kecekapan pembangunan.

Atas ialah kandungan terperinci Gunakan DTO trait PHP untuk mencapai kebolehgunaan semula dan kebolehskalaan interaksi data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn