Bagaimanakah Anda Boleh Mengendalikan Berbilang Senario Permulaan dalam Kelas PHP Tanpa Berbilang Pembina?

Patricia Arquette
Lepaskan: 2024-11-23 01:58:17
asal
772 orang telah melayarinya

How Can You Handle Multiple Initialization Scenarios in PHP Classes Without Multiple Constructors?

Berbilang Pembina dalam PHP

PHP tidak membenarkan berbilang pembina dengan tandatangan argumen berbeza dalam kelas. Ini menimbulkan cabaran apabila senario berbeza memerlukan proses pemulaan yang berbeza.

Satu pendekatan adalah untuk mentakrifkan dua kaedah pembina:

class Student {
    public function __construct($id) {
        $this->id = $id;
    }

    public function __construct(array $row_from_database) {
        $this->id = $row_from_database['id'];
        $this->name = $row_from_database['name'];
    }
}
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini melanggar peraturan sintaks pembina PHP.

Untuk memintas had ini, penyelesaian biasa adalah dengan mencipta kaedah kilang statik sebaliknya:

class Student {
    public function __construct() {
        // Allocate resources here
    }

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

    public static function withRow(array $row) {
        $student = new self();
        $student->id = $row['id'];
        $student->name = $row['name'];
        return $student;
    }
}
Salin selepas log masuk

Dengan teknik ini, pemulaan dilakukan melalui kaedah statik dan bukannya pembina:

$studentWithID = Student::withID(42);
$studentWithRow = Student::withRow(['id' => 42, 'name' => 'John']);
Salin selepas log masuk

Kaedah kilang statik menyediakan cara yang fleksibel dan boleh diselenggara untuk menangani pelbagai senario permulaan sementara mematuhi prinsip reka bentuk kelas PHP.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mengendalikan Berbilang Senario Permulaan dalam Kelas PHP Tanpa Berbilang Pembina?. 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