Čo je preťaženie v PHP?

V PHP máme rôzne koncepty objektovo orientovaného programovania, ako je trieda, objekt, zapuzdrenie, polymorfizmus atď. Preťaženie je tiež taký koncept OOP v PHP.

Preťaženie funkcií alebo preťaženie metód je funkcia, ktorá umožňuje vytvoriť niekoľko metód s rovnakým názvom, ktoré sa navzájom líšia v type vstupných parametrov. Je to jednoducho definované ako schopnosť jednej funkcie vykonávať rôzne úlohy.

Definícia preťaženia v jednom riadku: „rovnaký názov, ale rôzne implementácie“

Ako funguje preťaženie v PHP?

Ako vieme, preťaženie metód sa vykonáva vo funkciách. Funkcie teda môžu byť preťažené rôznymi implementáciami na základe argumentov odovzdaných každej funkcii. Napríklad na nájdenie oblasti kruhu, ktorý je pi * r * r, ak je daný polomer, na nájdenie oblasti štvorca, ktorý je stranou * strana, ak je uvedená dĺžka strany, plocha trojuholníka je (základná * výška) / 2 za predpokladu, že je uvedená dĺžka základne a výška atď.

Koncept preťaženia vyžaduje magické metódy.

Magické metódy začínajú znakom __ (dvojité podčiarknutie) a PHP ich automaticky volá. Tiež sú vždy definované vnútri triedy a nie mimo triedy. Rôzne magické metódy sú __get (), __set, __ constru (), __destruct (), __call (), __callStatic (), __isset (), __unset (),

Preťaženie po vykonaní dynamicky vytvára vlastnosti a metódy, ktoré sa spoločne nazývajú entity.

Subjekty sa tiež nazývajú

  • vlastnosti: členovia údajov
  • metódy: dátové funkcie

Pozrime sa, ako funguje kúzelná metóda pomocou metódy __call ()

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

Vo vyššie uvedenom príklade sme deklarovali triedu s názvom Test, ktorá má súkromné ​​vlastníctvo a metódu __call. Metóde __call sa odovzdajú dva argumenty. V metóde __call sme použili príkaz print (), var_dump argumenty a hodnotu x.

Potom sa vytvorí objekt triedy s názvom obj a pomocou tohto objektu sa vyvolá nedefinovaná metóda, pretože táto metóda neexistuje __call ().

Typy preťaženia v PHP

V PHP existujú dva typy preťaženia a naučme sa každý typ podrobne.

  • Preťaženie majetku
  • Metóda Preťaženie

1) Preťaženie majetku

Preťaženie majetku vytvára dynamické vlastnosti, keď je objekt nastavený. Táto vlastnosť je spojená s inštanciou triedy a ak táto vlastnosť nie je deklarovaná v rozsahu triedy, považuje sa za preťaženú vlastnosť. Za týmto účelom nemusíte písať žiadny ďalší kód. Nasledujúce magické metódy nám hovoria viac o tom istom.

Nižšie sú uvedené operácie vykonávané s preťaženými vlastnosťami

Preťažené vlastnosti Setter a Getter (pomocou __set () a __get ())

Vyhodnotenie nastavenia preťažených vlastností (pomocou __isset ())

Vrátiť späť také nastavenie vlastností (pomocou __unset ())

Pochopme použitie každej z týchto metód

__set () => sa používa na inicializáciu preťažených vlastností.

__get () => sa používa na načítanie už inicializovaných vlastností

__isset () => sa používa na kontrolu, či je vlastnosť nastavená alebo nie

__unset () => sa používa na zrušenie vlastníctva.

__call () => sa používa na inicializáciu preťažených metód

__callStatic () => sa používa na inicializáciu statických metód

Všetky vyššie uvedené metódy sa používajú v nasledujúcom príklade.

kód:

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;

kód:

Výkon

2) Metóda preťaženia

Podobne ako preťaženie majetku, preťaženie metódy vytvára dynamickú metódu, ktorá sa deklaruje mimo rozsahu triedy. A to je možné pomocou magických metód __call () a __callStatic (). Používajú sa na základe odkazu na objekt a statického odkazu.

__call () -> sa používa na volanie preťažených metód v referencii na objekt

__callStatic () -> sa používa na volanie preťažených metód v statickej referencii

Nasledujúci príklad vám pomôže dozvedieť sa viac.

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

kód:

Výkon:

pravidlá

1) Špecifikátor prístupu k verejnosti sa používa pre metódy preťaženia.

2) Používa sa proces preťaženia, pri ktorom sú prístupné vlastnosti alebo metódy, ktoré nie sú definované v rozsahu triedy, pri vytvorení objektu triedy.

3) Kúzelné metódy sa používajú na preťaženie vlastností alebo metód. Z dvoch magických metód používaných pri metódach preťaženia je najpoužívanejšou metódou metóda __call () v kontexte objektu a menej používanou metódou __callStatic (), ktorá sa používa v statickom kontexte.

Odporúčaný článok

Toto je sprievodca preťažením v PHP. Tu uvádzame príklady a koncepciu preťaženia v PHP s príkladmi. Viac informácií nájdete aj v nasledujúcom článku -

  1. Čo je to PHP?
  2. Čo je to PHP Array?
  3. Základné otázky PHP Interview
  4. Funkcie reťazca PHP
  5. Preťaženie v C # | Ako to funguje?
  6. Úvod do preťaženia v C ++
  7. Statická metóda v PHP
  8. Preťaženie a prekonanie v C #
  9. Metóda Python Magic Metódy, komponenty (príklady)

Kategórie: