Ikhtisar:
Sebagai pembangun, kita semua tahu bahawa PHP ialah bahasa yang ditaip, jadi setiap kelas mempunyai struktur sifat tertentu. Dalam sesetengah kes, kami perlu menambah sifat pada masa jalan untuk pengurusan data yang lebih baik dalam aplikasi. Nasib baik, kelas PHP membolehkan kami menambah sifat secara dinamik pada masa jalan sambil memastikan kod itu jelas dan mudah difahami.
Dalam artikel ini, kami akan menunjukkan cara menambah sifat pada masa jalan menggunakan sintaks terbina dalam dan API refleksi dalam PHP. Kami juga akan membentangkan kajian kes supaya anda boleh melihat cara teknologi ini digunakan dalam aplikasi dunia sebenar.
Sintaks untuk menambah atribut:
PHP 7.4 menyediakan petunjuk jenis untuk atribut. Dalam definisi kelas, anda mengisytiharkan jenis harta dan tahap akses yang sepadan (awam, dilindungi, peribadi). Sebagai contoh, kita boleh mengisytiharkan harta yang dilindungi dalam definisi kelas:
Contoh kelas {
protected int $myProtectedInt;
}
Apabila kami cuba mengakses harta itu, Kami boleh menggunakan kaedah capaian biasa seperti berikut:
$obj = new Contoh();
$obj->myProtectedInt = 5;
Pada ketika ini, kami telah berjaya Berikan nilai 5 kepada harta $myProtectedInt.
API Refleksi untuk menambah sifat:
PHP menyediakan set API terbina dalam khas yang dipanggil API refleksi. API refleksi membolehkan kami mendapatkan metadata daripada kod yang kami tulis semasa masa jalan. Ini bermakna kita boleh mendapatkan statistik tentang kelas dan ahlinya (sifat, kaedah, pemalar, dll.).
Kita boleh mendapatkan pantulan kelas menggunakan kod contoh berikut (perhatikan bahawa kita merujuk kelas Contoh):
$reflection = new ReflectionClass('Contoh');
Kini kita boleh mendapatkan semula senarai harta kelas. Sebagai contoh, kita boleh mendapatkan senarai sifat menggunakan kaedah $reflection->getProperties() seperti berikut:
$properties = $reflection->getProperties();
Kemudian, kita hanya Perlu mengulangi tatasusunan dan menambah sifat seperti yang diperlukan. Sebagai contoh, kod berikut menambah harta awam baharu:
$reflection = new ReflectionClass('Contoh');
$properties = $reflection->getProperties();
$name = 'myNewPublicProperty';
$reflection->newInstance()->$name = 'myNewValue';
Pada ketika ini, kami telah berjaya menambahkan sifat baharu bernama myNewPublicProperty dan menetapkannya Dimulakan kepada rentetan "myNewValue".
Kajian Kes:
Katakan kita sedang menulis aplikasi jualan mudah dan kita perlu menjejaki kuantiti stok produk yang berbeza. Memandangkan inventori produk mungkin berubah, kami perlu menambah atribut pada masa jalan untuk menjimatkan kuantiti inventori.
Kita boleh mentakrifkan kelas produk mudah menggunakan kod berikut:
kelas Produk {
private int $productId;
private string $name;
private float $price ;
fungsi awam __construct(int $productId, string $name, float $price){
$this->productId = $productId; $this->name = $name; $this->price = $price;
}
public function getProductId(){
return $this->productId;
}
fungsi awam getName(){
return $this->name;
}
fungsi awam getPrice(){
return $this->price;
}
}
Sekarang kita perlu menambah atribut inventori. Anda boleh mentakrifkan subkelas ProductWithStock dan menambah atribut stok seperti berikut:
kelas ProductWithStock memanjangkan Produk {
protected int $stock;
fungsi awam __construct(int $productId, string $name , float $price, int $stock){
parent::__construct($productId, $name, $price); $this->stock = $stock;
}
public function getStock(){
return $this->stock;
}
public function setStock(int $stock){
$this->stock = $stock;
}
}
Seperti yang anda lihat, subkelas ini mewarisi kelas Produk dan menambah stok pada harta itu. Tahap akses harta ini ditetapkan kepada dilindungi kerana dalam aplikasi, stok produk hendaklah dibaca sahaja dan harus diakses oleh kaedah getProductStock().
Dalam contoh pelaksanaan kod, kami mencipta objek ProductWithStock baharu, menambah sifat yang dipanggil $stock dan tetapkan nilainya dalam pembina. Dalam aplikasi sebenar, ia boleh diubah atau dikemas kini mengikut keperluan.
Dengan cara ini, kami telah berjaya menambahkan sifat dan melanjutkan kelas untuk mengurus data dengan lebih baik.
Kesimpulan:
Dalam artikel ini, kami mempelajari cara menambah atribut dalam PHP. Kami menggunakan sintaks terbina dalam untuk penambahan sifat mudah dan memperkenalkan cara untuk menambah sifat secara dinamik menggunakan API pantulan. Selain itu, kami menggunakan kajian kes untuk menunjukkan cara teknik ini digunakan dalam aplikasi sebenar dan menunjukkan kepada anda cara melanjutkan kelas untuk menjadikannya lebih fleksibel dan lebih mudah untuk diurus. Teknik ini sangat berguna semasa pembangunan kerana ia membenarkan data diurus dan diubah suai dalam aplikasi, membolehkan kebolehskalaan dan kebolehselenggaraan yang lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk menambah atribut ke kelas php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!