Wat is overbelasting in PHP?

We hebben verschillende concepten van Object-Oriented Programming zoals Class, Object, Encapsulation, Polymorphism enz. In PHP. Overbelasting is ook zo'n concept van OOP's in PHP.

Functieoverbelasting of methodeoverbelasting is een functie waarmee verschillende methoden met dezelfde naam kunnen worden gemaakt die van elkaar verschillen in het type invoerparameters. Het wordt eenvoudig gedefinieerd als het vermogen van een functie om verschillende taken uit te voeren.

Definitie van overbelasting op één regel: "dezelfde naam maar verschillende implementaties"

Hoe werkt overbelasting in PHP?

Zoals we weten, wordt overbelasting van de methode uitgevoerd op functies. Zo kunnen functies worden overbelast met verschillende implementaties op basis van de argumenten die aan elke functie worden doorgegeven. Om bijvoorbeeld het gebied van een cirkel te vinden dat pi * r * r is, mits de straal wordt gegeven, om het gebied van het vierkant te vinden dat zijde * zijde is, op voorwaarde dat de lengte van de zijde wordt gegeven, is het gebied van een driehoek (basis * hoogte) / 2 op voorwaarde dat de basislengte en de hoogte wordt gegeven, enzovoort.

Overbelasting Concept vereist Magic-methoden.

Magic Methods begint met __ (dubbel onderstrepingsteken) en wordt automatisch aangeroepen door PHP. Ook worden deze altijd binnen de klas gedefinieerd en niet buiten de klas. Verschillende magische methoden zijn __get (), __set, __ construct (), __destruct (), __call (), __callStatic (), __isset (), __unset (),

Overbelasting bij uitvoering creëert dynamisch eigenschappen en methoden die samen de entiteiten worden genoemd.

De entiteiten worden ook als genoemd

  • eigenschappen: gegevensleden
  • methoden: gegevensfuncties

Laten we eens kijken hoe de magische methode werkt met de __call () -methode

<_?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);
?>

In het bovenstaande voorbeeld hebben we een klasse met de naam Test gedeclareerd die privé-eigendom en een __call-methode heeft. Twee argumenten worden doorgegeven aan de __call-methode. Binnen de __call-methode hebben we statement print () gebruikt, een var_dump de argumenten en een waarde x worden geretourneerd.

Vervolgens wordt het object van de klasse met de naam obj gemaakt en met dit object wordt een niet-gedefinieerde methode aangeroepen, omdat deze methode niet bestaat. In plaats daarvan wordt __call () aangeroepen.

Soorten overbelasting in PHP

Er zijn twee soorten overbelasting in PHP en laten we elk type in detail leren.

  • Overbelasting van onroerend goed
  • Methode Overbelasting

1) Overbelasting van onroerend goed

Overbelasting van eigenschappen creëert dynamische eigenschappen wanneer het object is ingesteld. Deze eigenschap is gekoppeld aan de klasse-instantie en als deze eigenschap niet binnen de omvang van de klasse wordt gedeclareerd, wordt deze als overbelaste eigenschap beschouwd. Hiervoor hoeft u geen extra code te schrijven. De volgende magische methoden vertellen ons meer over hetzelfde.

Hieronder worden bewerkingen uitgevoerd met overbelaste eigenschappen

Setter en Getter overbelaste eigenschappen (met __set () en __get ())

Instelling overbelaste eigenschappen evalueren (met __isset ())

Een dergelijke instelling voor eigenschappen ongedaan maken (met __unset ())

Laten we het gebruik van elk van deze methoden begrijpen

__set () => wordt gebruikt om overbelaste eigenschappen te initialiseren.

__get () => wordt gebruikt om de reeds geïnitialiseerde eigenschappen op te halen

__isset () => wordt gebruikt om te controleren of de eigenschap is ingesteld of niet

__unset () => wordt gebruikt om de eigenschap uit te schakelen.

__call () => wordt gebruikt om overbelaste methoden te initialiseren

__callStatic () => wordt gebruikt om statische methoden te initialiseren

Alle bovenstaande methoden samen worden in het volgende voorbeeld gebruikt.

Code:

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;

Code:

uitgang

2) Methode overbelasting

Net als overbelasting van eigenschappen, creëert methode overbelasting een dynamische methode die buiten de klasse wordt gedeclareerd. En dit is mogelijk met __call () en __callStatic () magische methoden. Deze worden gebruikt op basis van respectievelijk de objectreferentie en de statische referentie.

__call () -> wordt gebruikt om overbelaste methoden in de objectreferentie aan te roepen

__callStatic () -> wordt gebruikt voor het aanroepen van overbelaste methoden in statische referentie

Het volgende voorbeeld helpt u meer te leren.

<_?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();
?>

Code:

Output:

Reglement

1) De openbare toegangsspecificatie wordt gebruikt voor de overbelastingsmethoden.

2) Het overbelastingsproces wordt gebruikt waarbij bij het aanmaken van het object van de klasse toegang kan worden verkregen tot de eigenschappen of methoden die niet binnen de omvang van de klasse zijn gedefinieerd.

3) Magische methoden worden gebruikt voor het overbelasten van eigenschappen of methoden. Van de twee magische methoden die worden gebruikt voor overbelastingsmethoden, is de meest gebruikte methode de __call () -methode in objectcontext en minder gebruikt is de __callStatic () -methode die in de statische context wordt gebruikt.

Aanbevolen artikel

Dit is een gids voor overbelasting in PHP. Hier bespreken we de soorten en het concept van overbelasting in PHP met de voorbeelden. U kunt ook het volgende artikel bekijken voor meer informatie -

  1. Wat is PHP?
  2. Wat is PHP Array?
  3. Core PHP Interview Vragen
  4. PHP String Functies
  5. Overbelasting in C # | Hoe het werkt?
  6. Inleiding tot overbelasting in C ++
  7. Statische methode in PHP
  8. Overbelasting en opheffen in C #
  9. Python Magische methode | Methoden, componenten (voorbeelden)