Što je preopterećenje u PHP-u?

U PHP-u imamo različite koncepte objektno-orijentiranog programiranja kao što su klasa, objekt, kapsulacija, polimorfizam itd. Preopterećenje je također takav koncept OOP-ova u PHP-u.

Preopterećenje funkcije ili preopterećenje metoda je značajka koja omogućuje stvaranje nekoliko metoda s istim imenom koje se međusobno razlikuju u vrsti ulaznih parametara. Jednostavno je definirana kao sposobnost jedne funkcije za obavljanje različitih zadataka.

Definicija preopterećenja u jednom retku: "isto ime, ali različite implementacije"

Kako preopterećenje funkcionira u PHP-u?

Kao što znamo, preopterećenje metoda vrši se na funkcijama. Stoga se funkcije mogu preopteretiti različitim implementacijama na temelju argumenata koji su proslijeđeni svakoj funkciji. Na primjer, za pronalaženje područja kruga koji je pi * r * r pod uvjetom davanja radijusa, pronalaženja područja kvadrata koji je strana * strana, ako je duljina stranice, područje trokuta je (osnovica * visina) / 2 pod uvjetom da se dade osnovna duljina i visina itd.

Koncept preopterećenja zahtijeva magične metode.

Magic Methods započinje s __ (dvostruka podvlaka), a PHP automatski zove. Isto tako su uvijek definirane unutar klase, a ne izvan klase. Različite magijske metode su __get (), __set, __ konstrukt (), __destruct (), __call (), __callStatic (), __isset (), __unset (),

Preopterećenje kad se izvodi stvara dinamički svojstva i metode koje se zajedno nazivaju entiteti.

Entiteti se nazivaju i as

  • svojstva: članovi podataka
  • metode: podatkovne funkcije

Pogledajmo kako djeluje čarobna metoda pomoću metode __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);
?>

U gornjem primjeru proglasili smo klasu koja se zove Test koja ima privatno vlasništvo i metodu __call. Dva su argumenta prenesena na metodu __call. Unutar metode __call koristili smo ispis print (), var_dump argumente i vrijednost x se vraćaju.

Tada se stvara predmet klase s nazivom obj, a pomoću ovog objekta naziva se neodređena metoda jer ova metoda ne postoji __call ().

Vrste preopterećenja u PHP-u

Postoje dvije vrste preopterećenja u PHP-u i dopustite da detaljno naučimo svaku vrstu.

  • Preopterećenje imovine
  • Metoda Preopterećenje

1) Preopterećenje imovine

Preopterećenje svojstva stvara dinamička svojstva kada se objekt postavi. Ovo svojstvo povezano je s instancom klase, a ako to svojstvo nije deklarirano u okviru klase, smatra se preopterećenim svojstvom. Za to vam nije potrebno pisati dodatni kod. Sljedeće čarobne metode govore nam više o istom.

Ispod su navedene operacije koje se izvode s preopterećenim svojstvima

Setter i Getter preopteretili svojstva (koristeći __set () i __get ())

Procjena postavke preopterećenih svojstava (pomoću __isset ())

Poništi postavku takvih svojstava (pomoću __unset ())

Razjasnimo uporabu svake od ovih metoda

__set () => koristi se za inicijalizaciju preopterećenih svojstava.

__get () => koristi se za dohvaćanje već inicijaliziranih svojstava

__isset () => koristi se za provjeru je li svojstvo postavljeno ili ne

__unset () => koristi se za uklanjanje entiteta.

__call () => koristi se za inicijalizaciju preopterećenih metoda

__callStatic () => koristi se za inicijalizaciju statičkih metoda

Sve gore navedene metode zajedno se koriste u sljedećem primjeru.

Kodirati:

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;

Kodirati:

Izlaz

2) Metoda preopterećenja

Kao i preopterećenje svojstava, preopterećenje metode stvara dinamičku metodu koja je deklarirana izvan opsega klase. A to je moguće pomoću magijskih metoda __call () i __callStatic (). Koriste se na temelju reference objekta i statičke reference.

__call () -> koristi se za pozivanje preopterećenih metoda u referenci objekta

__callStatic () -> koristi se za pozivanje preopterećenih metoda u statičkoj referenci

Sljedeći će vam primjer pomoći naučiti više.

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

Kodirati:

Izlaz:

pravila

1) Specifikator javnog pristupa koristi se za metode preopterećenja.

2) Postupak preopterećenja koristi se pri čemu se na stvaranju objekta klase može pristupiti svojstvima ili metodama koje nisu definirane u opsegu klase.

3) Magične metode koriste se za preopterećenje svojstava ili metoda. Od dvije magične metode koje se koriste za metode preopterećenja najčešće se koristi metoda __call () u objektnom kontekstu, a manje korištena je metoda __callStatic () koja se koristi u statičkom kontekstu.

Preporučeni članak

Ovo je vodič za preopterećenje u PHP-u. Ovdje ćemo s primjerima razgovarati o vrstama i konceptu preopterećenja u PHP-u. Možete pogledati i sljedeći članak da biste saznali više -

  1. Što je PHP?
  2. Što je PHP niz?
  3. Temeljna pitanja za PHP intervju
  4. PHP string funkcije
  5. Preopterećenje u C # | Kako radi?
  6. Uvod u preopterećenje u C ++
  7. Statička metoda u PHP-u
  8. Preopterećenje i preglasavanje u C #
  9. Python Magic Method | Metode, komponente (primjeri)

Kategorija: