Mis on PHP ülekoormamine?

PHP-s on meil erinevad objektorienteeritud programmeerimise kontseptsioonid, näiteks klass, objekt, kapseldamine, polümorfism jne. Ülekoormamine on ka PHP selline mõiste OOP-id.

Funktsioonide ülekoormamine või meetodi ülekoormamine on funktsioon, mis võimaldab luua mitu samanimelist meetodit, mis erinevad üksteisest sisendparameetrite tüübi poolest. See on lihtsalt määratletud kui ühe funktsiooni võime täita erinevaid ülesandeid.

Ühes reas ülekoormamise määratlus: “sama nimi, kuid erinevad rakendused”

Kuidas ülekoormamine töötab PHP-s?

Nagu me teame, toimub funktsioonide ülekoormus meetodil. Seega saab funktsioone erinevate rakendustega üle koormata, tuginedes igale funktsioonile edastatud argumentidele. Näiteks selleks, et leida ringi suurus, mis on pi * r * r, kui on antud raadius, et leida ruudu pindala, mis on külg *, kui on ette nähtud külje pikkus, kolmnurga pindala on (alus * kõrgus) / 2, kui on ette nähtud aluse pikkus ja kõrgus jne.

Kontseptsiooni ülekoormamine nõuab maagia meetodeid.

Maagilised meetodid algavad tähega __ (topelt allajoon) ja PHP kutsub neid automaatselt. Ka need määratletakse alati klassisiseselt, mitte klassist väljaspool. Erinevad võlumeetodid on __get (), __set, __ konstrukti (), __ hävita (), __kõne (), __callStatic (), __isset (), __unset (),

Ülekoormamine tekitab dünaamiliselt atribuute ja meetodeid, mida koos nimetatakse olemiteks.

Üksusi nimetatakse ka kui

  • omadused: andmeliikmed
  • meetodid: andmefunktsioonid

Vaatame, kuidas maagia meetod töötab __call () meetodit kasutades

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

Ülaltoodud näites oleme kuulutanud klassi nimega Test, millel on eraomand ja __-kõne meetod. __-kõne meetodile antakse kaks argumenti. Meetodi __call sees oleme kasutanud avalduse print (), tagastatakse argumendid var_dump ja väärtus x.

Seejärel luuakse klassi objekt nimega obj ja seda objekti kasutades nimetatakse määramata meetodit, kuna seda meetodit pole olemas, selle asemel kutsutakse __call ().

Ülekoormamise tüübid PHP-s

PHP-s on kahte tüüpi ülekoormamist ja õppigem igat tüüpi üksikasjalikult.

  • Vara ülekoormamine
  • Meetodi ülekoormamine

1) Vara ülekoormamine

Omaduse ülekoormamine loob objekti seadistamisel dünaamilised omadused. See atribuut on seotud klassi eksemplariga ja kui seda omadust ei kuulutata klassi ulatuses, loetakse see ülekoormatud atribuutiks. Selleks ei pea te lisakoodi kirjutama. Järgmised võluviisid räägivad meile samast.

Allpool on toodud ülekoormatud omadustega toimingud

Setteri ja Getteri ülekoormatud atribuudid (kasutades __set () ja __get ())

Ülekoormatud atribuutide seadete hindamine (kasutades __isset ())

Tühista sellised atribuudid (kasutades __unset ())

Mõistagem kõigi nende meetodite kasutamist

__set () => kasutatakse ülekoormatud omaduste initsialiseerimiseks.

__get () => kasutatakse juba initsialiseeritud omaduste toomiseks

__isset () => kasutatakse atribuudi seadistamise kontrollimiseks

__unset () => kasutatakse vara deaktiveerimiseks.

__call () => kasutatakse ülekoormatud meetodite initsialiseerimiseks

Staatiliste meetodite initsialiseerimiseks kasutatakse __callStatic () =>

Kõiki ülaltoodud meetodeid koos kasutatakse järgmises näites.

Kood:

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;

Kood:

Väljund

2) Meetodi ülekoormamine

Nagu vara ülekoormamine, loob ka meetodi ülekoormamine dünaamilise meetodi, mis kuulutatakse väljapoole klassi piire. Ja see on võimalik __call () ja __callStatic () maagiliste meetoditega. Neid kasutatakse vastavalt objekti viitele ja staatilistele viidetele.

Objekti viites kasutatakse ülekoormatud meetodite kutsumiseks __call () ->

__callStatic () -> kasutatakse ülekoormatud meetodite kutsumiseks staatilises viites

Järgmine näide aitab teil rohkem teada saada.

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

Kood:

Väljund:

Reeglid

1) Ülelaadimismeetodite jaoks kasutatakse avaliku juurdepääsu spetsifikaatorit.

2) Klassi objekti loomisel kasutatakse ülekoormusprotsessi, kus klassi ulatuses määratlemata omadustele või meetoditele saab juurde pääseda.

3) Maagilisi meetodeid kasutatakse omaduste või meetodite ülekoormamiseks. Kahest võltsimismeetodist, mida kasutatakse ülekoormusmeetodite jaoks, on enim kasutatav meetod objekti kontekstis __call () meetod ja vähem kasutatud on __callStatic () meetod, mida kasutatakse staatilises kontekstis.

Soovitatav artikkel

See on juhend PHP-s ülekoormamise kohta. Siin käsitleme näidetes PHP-s ülekoormamise tüüpe ja kontseptsiooni. Lisateabe saamiseks võite vaadata ka järgmist artiklit -

  1. Mis on PHP?
  2. Mis on PHP massiiv?
  3. Põhilised PHP-intervjuu küsimused
  4. PHP stringifunktsioonid
  5. Ülekoormus C # | Kuidas see töötab?
  6. C ++ sissejuhatus ülekoormamisse
  7. Staatiline meetod PHP-s
  8. C-numbri ülekoormamine ja alistamine
  9. Pythoni võlumeetod | Meetodid, komponendid (näited)

Kategooria: