Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mencapai Fungsi Lebihan Pembina dalam PHP?

Bagaimana untuk Mencapai Fungsi Lebihan Pembina dalam PHP?

Mary-Kate Olsen
Lepaskan: 2024-11-15 11:25:03
asal
929 orang telah melayarinya

How to Achieve Constructor Overload Functionality in PHP?

Lebihan Pembina dalam PHP: Penyelesaian Optimum

Dalam PHP, mengisytiharkan berbilang pembina dengan tandatangan argumen yang berbeza-beza dalam satu kelas tidak boleh dilaksanakan. Walau bagaimanapun, terdapat penyelesaian pragmatik untuk menangani cabaran ini.

Pertimbangkan senario berikut:

class Student {
    protected $id;
    protected $name;
    // etc.

    public function __construct($id) {
        $this->id = $id;
        // other members remain uninitialized
    }

    public function __construct($row_from_database) {
        $this->id = $row_from_database->id;
        $this->name = $row_from_database->name;
        // etc.
    }
}
Salin selepas log masuk

Untuk menangani isu ini, pendekatan berikut disyorkan:

<?php

class Student {
    public function __construct() {
        // allocate necessary resources
    }

    public static function withID($id) {
        $instance = new self();
        $instance->loadByID($id);
        return $instance;
    }

    public static function withRow(array $row) {
        $instance = new self();
        $instance->fill($row);
        return $instance;
    }

    protected function loadByID($id) {
        // fetch data from database
        $row = my_awesome_db_access_stuff($id);
        $this->fill($row);
    }

    protected function fill(array $row) {
        // populate properties from array
    }
}

?>
Salin selepas log masuk

Dalam penyelesaian ini, bukannya mencipta berbilang pembina, kaedah pembantu statik digunakan. Dengan menggunakan kaedah ini, tika Pelajar baharu boleh dibuat dan dimulakan dengan nilai khusus:

// Create a student with a known ID
$student = Student::withID($id);

// Create a student using a database row array
$student = Student::withRow($row);
Salin selepas log masuk

Pendekatan ini mengelakkan potensi kerumitan pengekodan dan cabaran penyelenggaraan yang dikaitkan dengan mempunyai berbilang pembina dalam satu kelas PHP.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi Lebihan Pembina dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan