Polimorfisme dalam PHP

PHPz
Lepaskan: 2024-08-29 13:05:50
asal
443 orang telah melayarinya

Polymorphism ialah salah satu konsep yang baik bagi ciri Bahasa Pengaturcaraan Berorientasikan Objek PHP (ciri OOP). Perkataan polimorfisme sebenarnya berasal daripada dua perkataan Yunani "Poly" dan "Morph". Makna poli ialah "banyak" dan morf ialah "bentuk". Ia bermaksud keupayaan untuk mempunyai banyak bentuk. Secara umum, Polimorfisme ialah corak Pengaturcaraan Berorientasikan Objek di mana kelas mempunyai pelbagai fungsi sambil mempunyai antara muka biasa. Sebenarnya Polimorfisme terdiri daripada dua jenis: Compile-Time dan Run-Time. PHP tidak menyokong polimorfisme masa kompilasi yang bermaksud kelebihan beban fungsi dan pengendali.

IKLAN Kursus Popular dalam kategori ini PEMBANGUN PHP - Pengkhususan | 8 Siri Kursus | 3 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks:

Class a{
//methods
Public function b(){
//methods
}
}
Class b extends a{
//methods
Public function b(){
//methods which are in/not in the function of the class a.
}
}
Salin selepas log masuk

Penjelasan:

Dalam sintaks di atas, kami membuat 2 kelas satu adalah normal dan satu lagi adalah untuk melanjutkan kelas tetapi kami menggunakan nama/kaedah fungsi yang sama untuk fungsi yang berbeza. Ini dipanggil poli morphing. Seseorang boleh menggunakan banyak nama fungsi/kaedah yang serupa dengan fungsi berbeza mengikut keperluan dalam pengekodan.

Fungsi Polimorfisme dalam PHP

Polimorfisme PHP berfungsi berdasarkan konsep polimorfisme masa larian. Dalam PHP, Polimorfisme berfungsi dengan membuat keputusan semasa runtime yang sebenarnya bukan konsep polimorfisme masa kompilasi atau sebaliknya kita boleh mengatakan bahawa kita mempunyai banyak/pelbagai alat yang merupakan subjenis untuk kelas super, konsep runtime (overloading fungsi) adalah contoh polimorfisme Bahasa Pengaturcaraan PHP.

Lebihan beban fungsi bermakna memperoleh kelas daripada fungsi yang baru dicipta dengan tandatangan yang sama (ia bermakna fungsi itu mempunyai nama yang sama, jenis yang sama dan beberapa argumen) dalam kelas induknya sebagai fungsi yang dipanggil sebagai kaedah mengatasi . Dalam konsep polimorfisme ini, seseorang boleh mencipta fungsi dengan memanjangkan tetapi nama yang sama/fungsi penamaan yang serupa harus dilibatkan untuk memproses konsep polimorfisme dan pewarisan. Untuk meningkatkan keupayaan pengaturcaraan dengan meningkatkan fungsi kelas yang mempunyai polimorfisme antara muka biasa adalah satu kemestian.

Contoh untuk Melaksanakan Polimorfisme dalam PHP

Di bawah ialah contoh Polimorfisme dalam PHP:

Contoh #1

Dalam contoh di bawah, salah satu daripada kelas asas "Shap1" dicipta. Di sini kita akan mewarisi kelas Shap1 dalam tiga kelas terbitan. Nama kelas ialah Circle1, Triangle1, dan Elliipse1. Setiap kelas mempunyai cabutan fungsi untuk melengkapkan Polimorfisme runtime bahasa pengaturcaraan PHP. Dalam proses panggilan berikut, di sini kita akan mencipta tatasusunan dengan panjang 2 dan setiap indeks tatasusunan membantu dalam mencipta objek satu kelas. Selepas ini, kita akan menggunakan gelung yang akan dilaksanakan berdasarkan panjang tatasusunan yang mempunyai nilai "$i1" yang dihantar ke pembolehubah tatasusunan objek "$Val1[$i1]". Jadi ia akan dilaksanakan 3 kali dan ia akan dipanggil menggunakan kaedah draw() bagi setiap kelas.

Kod:

<?php
class Shap1
{
function draw1(){}
}
class Circle1 extends Shap1
{
function draw1()
{
print "Circle1 has been drawn.\n";
}
}
class Triangle1 extends Shap1
{
function draw1()
{
print "Triangle1 has been drawn.\n";
}
}
class Ellipse1 extends Shap1
{
function draw1()
{
print "Ellipse1 has been drawn.";
}
}
$Val1=array(2);
$Val1[0]=new Circle1();
$Val1[1]=new Triangle1();
$Val1[2]=new Ellipse1();
for($i1=0;$i1<3;$i1++)
{
$Val1[$i1]->draw1();
}
?>
Salin selepas log masuk

Output:

Polimorfisme dalam PHP

Contoh #2

Ini adalah contoh pelaksanaan konsep Polimorfisme dengan bantuan antara muka. Antara muka/antara muka adalah/sangat serupa dengan mana-mana kelas kecuali yang tidak mengandungi sebarang kod. Antara muka membantu dalam mentakrifkan nama kaedah dan juga hujah kaedah tetapi di sini kandungan kaedah tidak akan ditakrifkan. Antara muka yang dilaksanakan oleh mana-mana kelas/kelas mesti dilaksanakan oleh semua kaedah yang dicirikan oleh antara muka.

Di sini Machine1 akan mempunyai semua kelas untuk mentakrifkan calcTask1. Circle1 melaksanakan kaedah CallTask1(). Rectangle1 juga cuba melaksanakan antara muka Mesin tetapi mentakrifkan dengan badan kaedah calcTask1() yang berbeza. Polimorfisme mengatakan bahawa semua kaedah yang mengira tugas harus mempunyai nama yang setara. Kami akan memanggil nama berbeza calcTask1() tanpa memberikan butirannya. Di sini nama kaedah yang mengira tugasan adalah penting.

Kod:

<?php
interface Machine1 {
public function calcTask1();
}
class Circle1 implements Machine1 {
private $radius1;
public function __construct($radius1){
$this -> radius1 = $radius1;
}
public function calcTask1(){
return $this -> radius1 * $this -> radius1 * pi();
}
}
class Rectangle1 implements Machine1 {
private $width1;
private $height1;
public function __construct($width1, $height1){
$this -> width1 = $width1;
$this -> height1 = $height1;
}
public function calcTask1(){
return $this -> width1 * $this -> height1;
}
}
$mycirc1 = new Circle1(3);
$myrect1 = new Rectangle1(3,4);
echo $mycirc1->calcTask1();
echo $myrect1->calcTask1();
?>
Salin selepas log masuk

Output:

Polimorfisme dalam PHP

Example #3

In the below example a class “base11” is created with a function add1() with $a1 and $b1 variables. Then “$res1” variable is created which is used to store the multiplication of the two variables “$a1” and “$b1” and the echo statement is used to print if the function is called. Then Child1 class is used to extend the base11 class. In the extended class, again add1() variable is created to store the sum or the a1 and b1 variables. Then a new object is created and called by passing the variable values to the values $a1 and $b1 variables.

Code:

<?php
class base11
{
function add1($a1,$b1)
{
$res1=$a1*$b1;
echo "Multiplication = ".$res1;
}
}
class child1 extends base11
{
function add1($a1,$b1)
{
$res1=$a1+$b1;
echo "Sum  = ".$res1;
}
}
$obj= new child1();
$obj->add1(1000,500);
?>
Salin selepas log masuk

Output:

Polimorfisme dalam PHP

Example #4

In the below example a class “BaseClass11” is created with the public function “myMethod()” is created with the echo statement to mention that “BaseClass11 method” is called that. Then again DerivedClass11 is created to extend the BaseClass11 with the same name function “myMethod()” with the echo statement to print “DerivedClass11 method called” like that. We are calling the same/similar naming function in different classes. Then new object is created for the function/ method “myMethod()”.

Code:

<?php
class BaseClass11
{
public function myMethod11()
{
echo "BaseClass11 method called";
}
}
class DerivedClass11 extends BaseClass11
{
public function myMethod11()
{
echo "DerivedClass11 method called";
}
}
function processClass11(BaseClass11 $c11)
{
$c11->myMethod11();
}
$c11 = new DerivedClass11();
processClass11($c11);
?>
Salin selepas log masuk

Output:

Polimorfisme dalam PHP

Recommended Article

This is a guide to the Polymorphism in PHP. Here we discuss the what is the definition of Polymorphism and its Working along with its examples as well as Code Implementation. You can also go through our other suggested articles to learn more-

  1. PHP Frameworks
  2. basename in PHP
  3. Validation in PHP
  4. print_r() in PHP

Atas ialah kandungan terperinci Polimorfisme dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan