Шта је преоптерећење у ПХП-у?

Имамо различите концепте објектно оријентисаног програмирања као што су класа, објект, капсулација, полиморфизам итд. У ПХП-у. Преоптерећење је такав концепт ООП-ова у ПХП-у.

Преоптерећење функције или преоптерећење метода је функција која омогућава креирање неколико метода с истим именом које се међусобно разликују у врсти улазних параметара. Једноставно је дефинисана као способност једне функције да обавља различите задатке.

Дефиниција преоптерећења у једном ретку: „исто име, али различите имплементације“

Како преоптерећење функционише у ПХП-у?

Као што знамо, преоптерећење метода се врши на функцијама. Стога се функције могу преоптеретити различитим имплементацијама на основу аргумената који су прослијеђени свакој функцији. На пример, да бисте пронашли површину круга која је пи * р * р, под условом да је дат радијус, да бисте пронашли површину квадрата која је страна * страна, под условом да је дата дужина стране, површина троугла је (основа * висина) / 2 под условом да се даде основна дужина и висина итд.

Концепт преоптерећења захтева магичне методе.

Магиц Метходс започиње с __ (двострука подвлака), а ПХП се аутоматски позива. Такође су увек дефинисане унутар класе, а не изван класе. Различите магијске методе су __гет (), __сет, __ цонструцт (), __деструцт (), __цалл (), __цаллСтатиц (), __иссет (), __унсет (),

Преоптерећење када се изводи ствара динамички својства и методе које се заједно називају ентитети.

Ентитети се такође називају и ас

  • својства: чланови података
  • методе: функције података

Погледајмо како функционира магијска метода помоћу методе __цалл ()

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

У горњем примеру смо прогласили класу која се зове Тест која има приватно својство и методу __цалл. Два аргумента су предата методи __цалл. Унутар __цалл методе користили смо испис принт (), вар_думп аргументе и вриједност к су враћени.

Тада се ствара предмет класе с именом обј, а помоћу овог објекта се назива неодређена метода будући да ова метода не постоји, умјесто тога се зове __цалл ().

Врсте преоптерећења у ПХП-у

Постоје двије врсте преоптерећења у ПХП-у и допустите да детаљно научимо сваку врсту.

  • Преоптерећење имовине
  • Метода Преоптерећење

1) Преоптерећење имовине

Преоптерећење својства ствара динамичка својства када се објект постави. Ово својство је повезано са инстанцом класе, а ако ово својство није декларисано у опсегу класе, сматра се преоптерећеним својством. За ово вам није потребно писати додатни код. Следеће магичне методе говоре нам више о истом.

Испод су наведене операције које се изводе са преоптерећеним својствима

Сеттер и Геттер преоптеретили својства (користећи __сет () и __гет ())

Процена поставке преоптерећених својстава (коришћењем __иссет ())

Поништавање такве поставке својстава (коришћењем __унсет ())

Разумејмо употребу сваке од ових метода

__сет () => користи се за иницијализацију преоптерећених својстава.

__гет () => користи се за дохваћање већ иницијализираних својстава

__иссет () => користи се за провјеру да ли је својство постављено или не

__унсет () => користи се за уклањање својства.

__цалл () => користи се за иницијализацију преоптерећених метода

__цаллСтатиц () => користи се за иницијализацију статичких метода

Све горе наведене методе користе се у следећем примеру.

Шифра:

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;

Шифра:

Излаз

2) Метод преоптерећења

Као и преоптерећење својстава, преоптерећење метода ствара динамичку методу која је декларирана изван обима класе. А то је могуће помоћу __цалл () и __цаллСтатиц () магичних метода. Користе се на основу референце објекта и статичке референце.

__цалл () -> користи се за позивање преоптерећених метода у референци објекта

__цаллСтатиц () -> користи се за позивање преоптерећених метода у статичкој референци

Следећи пример ће вам помоћи да сазнате више.

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

Шифра:

Излаз:

Правила

1) Спецификатор јавног приступа користи се за методе преоптерећења.

2) Поступак преоптерећења користи се при чему се својствима или методама који нису дефинисани у опсегу класе може приступити при креирању објекта класе.

3) Магичне методе користе се за преоптерећење својстава или метода. Од две магичне методе које се користе за методе преоптерећења најчешће се користи метода __цалл () у објектном контексту, а мање се користи метода __цаллСтатиц () која се користи у статичком контексту.

Препоручени чланак

Ово је водич за преоптерећење у ПХП-у. Овде ћемо са примерима разговарати о типовима и концепту преоптерећења у ПХП-у. Такође можете погледати следећи чланак да бисте сазнали више -

  1. Шта је ПХП?
  2. Шта је ПХП Арраи?
  3. Основна питања за ПХП интервју
  4. ПХП стринг функције
  5. Преоптерећење у Ц # | Како то ради?
  6. Увод у преоптерећење у Ц ++
  7. Статички метод у ПХП-у
  8. Преоптерећење и прегласавање у Ц #
  9. Питхон Магиц Метход | Методе, компоненте (примери)

Категорија: