Hvad er overbelastning i PHP?

Vi har forskellige koncepter af objektorienteret programmering som klasse, objekt, indkapsling, polymorfisme osv. I PHP. Overbelastning er også et sådant koncept med OOP'er i PHP.

Funktionoverbelastning eller metodeoverbelastning er en funktion, der gør det muligt at oprette flere metoder med det samme navn, der adskiller sig fra hinanden i typen af ​​inputparametre. Det er simpelthen defineret som en funktions evne til at udføre forskellige opgaver.

Definition af overbelastning på en linje: “samme navn men forskellige implementeringer”

Hvordan fungerer overbelastning i PHP?

Som vi ved udføres metodeoverbelastning på funktioner. Funktioner kan således overbelastes med forskellige implementeringer baseret på de argumenter, der er sendt til hver funktion. For eksempel at finde arealet af en cirkel, der er pi * r * r, forudsat at radius er givet, for at finde det område med kvadratet, der er side * side, forudsat at sidelængden er angivet, arealet af en trekant er (base * højde) / 2 forudsat at baselængden og højden er angivet osv.

Overbelastningskoncept kræver magiske metoder.

Magiske metoder begynder med __ (dobbelt understreg) og kaldes automatisk af PHP. Disse er også altid defineret inde i klassen og ikke uden for klassen. Forskellige magiske metoder er __get (), __set, __ construct (), __destruct (), __call (), __callStatic (), __isset (), __unset (),

Overbelastning, når det udføres, skaber egenskaber og metoder dynamisk, som sammen kaldes enhederne.

Enhederne kaldes også som

  • egenskaber: data medlemmer
  • metoder: datafunktioner

Lad os se på, hvordan den magiske metode fungerer ved hjælp af __call () -metoden

<_?php
class Test(
private $a = array('one', 'two', 'three');
public function__call($method, $args) (
print "Method $method called:\n";
echo " ";
print_r($args);
return $this->a;
)
)
$obj = new Test();
$a = obj->anyMethod(1, 2, 3);
var_dump($a);
?>

 class Test(
private $a = array('one', 'two', 'three');
public function__call($method, $args) (
print "Method $method called:\n";
echo " ";
print_r($args);
return $this->a;
)
)
$obj = new Test();
$a = obj->anyMethod(1, 2, 3);
var_dump($a);
?>

I ovenstående eksempel har vi erklæret en klasse kaldet Test, der har privat ejendom og en __call-metode. To argumenter overføres til __call-metoden. Inde i __call-metoden har vi brugt statement print (), en var_dump argumenterne og en værdi x returneres.

Derefter oprettes objektet for klassen med navnet obj, og ved hjælp af dette objekt kaldes en udefineret metode, da denne metode ikke findes __call () kaldes i stedet.

Typer af overbelastning i PHP

Der er to typer overbelastning i PHP og lad os lære hver type detaljeret.

  • Overbelastning af ejendom
  • Metode Overbelastning

1) Overbelastning af ejendom

Overbelastning af egenskaber skaber dynamiske egenskaber, når objektet er indstillet. Denne egenskab er knyttet til klasseforekomsten, og hvis denne egenskab ikke er deklareret inden for klassens omfang, betragtes den som overbelastet ejendom. Til dette behøver du ikke skrive nogen ekstra kode. Følgende magiske metoder fortæller os mere om det samme.

Nedenfor nævnes operationer udført med overbelastede egenskaber

Setter og Getter overbelastede egenskaber (ved hjælp af __set () og __get ())

Evaluering af indstillinger for overbelastede egenskaber (ved hjælp af __isset ())

Fortryd sådan egenskabsindstilling (ved hjælp af __unset ())

Lad os forstå brugen af ​​hver af disse metoder

__set () => bruges til at initialisere overbelastede egenskaber.

__get () => bruges til at hente de allerede initialiserede egenskaber

__isset () => bruges til at kontrollere, om ejendommen er indstillet eller ej

__unset () => bruges til at deaktivere ejendommen.

__call () => bruges til at initialisere overbelastede metoder

__callStatic () => bruges til at initialisere statiske metoder

Alle ovennævnte metoder anvendes sammen i følgende eksempel.

Kode:

class PropertyOverloading (
public $details = array();
//declaring private property
private $j=20;
// setter operation
public function __set($name, $value) (
echo "
". " In the Setting operation. Set '$name = $value'";
$this->details($name) = $value;
)
// getter operation
public function __get($name) (
echo "
". " In the Getting Operation. Get '$name = '";
return $this->details($name) . '
';
)
// isset operation
public function __isset($name) (
echo "
". " In the isset Operation. isset '$name' ?";
return isset($this->details($name));
)
// unset operation
public function __unset($name) (
echo "
". " In the unset Operation. unset '$name' ";
unset($this->details($name));
)
// returning private property value
public function getPrivateProperty() (
return "
". " j = ".$this->j;
)
)
// creating object of class PropertyOverloading
// setter and getter methods are called
$obj = new PropertyOverloading();
$obj->x = 10;
echo $obj->x;
//call isset method
var_dump(isset($obj->x));
//call unset method
unset($obj->x);
//check whether object x is unset or not
var_dump(isset($obj->x));
//getting method to access the private property
echo "
". $obj-> getPrivateProperty();
//calling directly the private property
// throws error
echo "
accessing the private property, throws error";
echo "
".$obj->j;

Kode:

Produktion

2) Overbelastning af metode

Ligesom overbelastning af ejendom, skaber metodeoverbelastning en dynamisk metode, der erklæres uden for klassens omfang. Og dette er muligt med __call () og __callStatic () magiske metoder. Disse bruges baseret på henholdsvis objektreferencen og den statiske reference.

__call () -> bruges til at kalde overbelastede metoder i objektreferencen

__callStatic () -> bruges til at kalde overbelastede metoder i statisk reference

Følgende eksempel vil hjælpe dig med at lære mere.

<_?php
class MethodOverloading
(
public function __call($name, $param)(
echo "--With object reference
";
)
public static function __callStatic($name, $param)(
echo "-----With static reference
";
)
)
// creating object of class MethodOverloading
$obj = new MethodOverloading;
echo "Method Overloading
";
// using the object reference
$obj->DemoTest();
// using the static reference
MethodOverloading::DemoTest();
?>

Kode:

Produktion:

Regler

1) Den offentlige adgangsspecifikation bruges til overbelastningsmetoder.

2) Overbelastningsprocessen bruges, hvor man kan få adgang til egenskaberne eller metoderne, der ikke er defineret inden for klassen, ved oprettelse af klassens objekt.

3) Magiske metoder bruges til overbelastning af egenskaber eller metoder. Ud af de to magiske metoder, der bruges til overbelastningsmetoder, er den mest anvendte metode __call () -metoden i objektsammenhæng, og mindre brugt er __callStatic () -metoden, der bruges i den statiske kontekst.

Anbefalet artikel

Dette er en guide til overbelastning i PHP. Her diskuterer vi typerne og begrebet overbelastning i PHP med eksemplerne. Du kan også se på den følgende artikel for at lære mere -

  1. Hvad er PHP?
  2. Hvad er PHP Array?
  3. Core PHP-interviewspørgsmål
  4. PHP-strengfunktioner
  5. Overbelastning i C # | Hvordan det virker?
  6. Introduktion til overbelastning i C ++
  7. Statisk metode i PHP
  8. Overbelastning og tilsidesættelse i C #
  9. Python Magic Method | Metoder, komponenter (eksempler)

Kategori: