Hva er overbelastning i PHP?

Vi har forskjellige konsepter av objektorientert programmering som klasse, objekt, innkapsling, polymorfisme osv. I PHP. Overbelastning er også et slikt konsept for OOPs i PHP.

Overbelastning av funksjoner eller overbelastning av metoder er en funksjon som gjør det mulig å lage flere metoder med samme navn som skiller seg fra hverandre i typen inngangsparametere. Det er ganske enkelt definert som en funksjons evne til å utføre forskjellige oppgaver.

Definisjon av overbelastning på en linje: “samme navn men forskjellige implementeringer”

Hvordan fungerer overbelastning i PHP?

Som vi vet, utføres metodeoverbelastning på funksjoner. Dermed kan funksjoner overbelastes med forskjellige implementeringer basert på argumentene som er gitt til hver funksjon. For eksempel for å finne området til en sirkel som er pi * r * r forutsatt at radius er gitt, for å finne området med kvadratet som er side * side, forutsatt at lengden på siden er gitt, er området av en trekant (base * høyde) / 2 forutsatt at grunnlengden og høyden er gitt og så videre.

Overbelastningskonsept krever magiske metoder.

Magic Methods begynner med __ (dobbelt understrek), og blir automatisk kalt av PHP. Også disse er alltid definert i klassen og ikke utenfor klassen. Ulike magiske metoder er __get (), __set, __ construct (), __destruct (), __call (), __callStatic (), __isset (), __unset (),

Overbelastning når den utføres skaper egenskaper og metoder dynamisk som sammen kalles enhetene.

Enhetene kalles også som

  • egenskaper: datamedlemmer
  • metoder: datafunksjoner

La oss se på hvordan den magiske metoden fungerer ved hjelp av __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 eksemplet over har vi erklært en klasse som heter Test som har privat eiendom og en __call-metode. To argumenter sendes til __call-metoden. Inne i __call-metoden har vi brukt statement print (), en var_dump argumentene og en verdi x blir returnert.

Da opprettes objektet for klassen med navnet obj og ved bruk av dette objektet kalles en udefinert metode siden denne metoden ikke eksisterer __call () kalles i stedet.

Typer overbelastning i PHP

Det er to typer overbelastning i PHP og la oss lære hver type i detalj.

  • Overbelastning av eiendommer
  • Metode Overbelastning

1) Overbelastning av eiendommer

Overbelastning av eiendommer skaper dynamiske egenskaper når objektet er satt. Denne egenskapen er tilknyttet klasseforekomsten, og hvis denne egenskapen ikke deklareres innenfor klassens omfang, regnes den som overbelastet eiendom. For dette trenger du ikke skrive noen ekstra kode. Følgende magiske metoder forteller oss mer om det samme.

Nedenfor nevnt er operasjoner utført med overbelastede egenskaper

Setter og Getter overbelastede egenskaper (ved bruk av __set () og __get ())

Evaluering av innstillinger for overbelastede egenskaper (ved bruk av __isset ())

Angre slike egenskaper (ved bruk av __unset ())

La oss forstå bruken av hver av disse metodene

__set () => brukes til å initialisere overbelastede egenskaper.

__get () => brukes til å hente de allerede initialiserte egenskapene

__isset () => brukes til å sjekke om eiendommen er angitt eller ikke

__unset () => brukes til å deaktivere eiendommen.

__call () => brukes til å initialisere overbelastede metoder

__callStatic () => brukes til å initialisere statiske metoder

Alle ovennevnte metoder brukes 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:

Produksjon

2) Overbelastning av metode

I likhet med overbelastning av eiendommer, skaper metodeoverbelastning en dynamisk metode som deklareres utenfor klassens omfang. Og dette er mulig med __call () og __callStatic () magiske metoder. Disse brukes basert på henholdsvis objektreferansen og den statiske referansen.

__call () -> brukes til å ringe overbelastede metoder i objektreferansen

__callStatic () -> brukes til å ringe overbelastede metoder i statisk referanse

Følgende eksempel vil hjelpe deg å lære mer.

<_?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:

Produksjon:

regler

1) Den offentlige tilgangspesifikatoren brukes for overbelastningsmetodene.

2) Overbelastningsprosessen brukes der egenskapene eller metodene som ikke er definert innenfor klassens omfang kan nås ved opprettelse av objektets klasse.

3) Magiske metoder brukes for overbelastning av egenskaper eller metoder. Av de to magiske metodene som brukes for overbelastningsmetoder, er den mest brukte metoden __call () -metoden i objektsammenheng, og mindre brukt er __callStatic () -metoden som brukes i statisk kontekst.

Anbefalt artikkel

Dette er en guide til overbelastning i PHP. Her diskuterer vi typene og begrepet overbelastning i PHP med eksemplene. Du kan også se på følgende artikkel for å lære mer -

  1. Hva er PHP?
  2. Hva er PHP Array?
  3. Core PHP-intervjuspørsmål
  4. PHP-strengfunksjoner
  5. Overbelastning i C # | Hvordan det fungerer?
  6. Introduksjon til overbelastning i C ++
  7. Statisk metode i PHP
  8. Overbelastning og overstyring i C #
  9. Python Magic Method | Metoder, komponenter (eksempler)