Въведение в модификатори за достъп в PHP

Модификатор на достъп е начин, чрез който можем да зададем обхвата на достъпността и правата върху променливата на всеки друг идентификатор в PHP. PHP поддържа различни ключови думи, за да направи всяка променлива за достъп до която и да е променлива и идентификаторите. Можем да присвоим тези ключови думи на класа, функцията или идентификаторите. Тези ключови думи - публични, частни, защитени, абстрактни, окончателни и т.н.

Кога да използвам модификатори на достъп в PHP?

PHP има някои ограничения за модификатора на достъпа си, за разлика от Java. Не можем да използваме всички модификатори за достъп на PHP на ниво клас, ниво на функция и ниво на идентификатор. Можем да използваме тези модификатори за достъп според нуждите на нашия бизнес, за да дадем разрешение или да отменим разрешение в цялата програма или приложението.

Ето модификаторите на списъка и дали е приложим или не:

Модификатор на достъпНиво на класаФункционално нивоПроменливо ниво
общественNAДАДА
частенNAДАДА
защитениNAДАДА
абстрактенДАДАNA
финалДАДАNA
статиченNAДАДА

В горната приказка NA обозначава Неприложимото. Това означава, че не можем да използваме публичното, частното и защитеното на ниво клас. Можем да използваме абстрактното и финалното само на ниво клас.

Различни модификатори на достъп в PHP

Ето следните Модификатори на достъп в PHP споменаваме по-долу

1. Модификатор за обществен достъп

Обществеността е модификатор по подразбиране като JAVA в PHP. Това означава, че ако не използваме модификатор с функциите на идентификаторите по подразбиране, той се счита за модификатор за обществен достъп. Това е едно от най-широко използваните. Тъй като в момента, в който стигнем до повторната използваемост на кода на функцията, обикновено отиваме с модификатора за обществен достъп. Тъй като обществеността може да се използва отвсякъде, в рамките на класа със сигурност, извън класа, в разширения клас, и ако тази обществена повторна употреба не е ограничена към който и да е клас, можем да използваме това навсякъде, където включваме файла. Както беше споменато в горната таблица, ние не можем да използваме този публичен модификатор с класа заедно с частни и защитени.

Сега е време да видим примера на модификатора за обществен достъп:

<_?php
class MyAccess (
var $var = "This is first var";
// print var variable value
function returnVar() (
echo $this->var;
)
)
$obj1 = new MyAccess();$obj1->returnVar();
?>

В горния код функцията returnVar () е дефинирана без модификатор на достъп с нея, така че това ще работи като публично, тъй като това е модификатор по подразбиране на езика на PHP.

публични, частни и защитени няма да бъдат приложими на ниво клас, нека го видим с пример.

<_?php
class public MyAccess (
var $var = "This is first var";
function returnVar() (
echo $this->var;
)
)
$obj1 = new MyAccess();
$obj1->returnVar();
?>

Горният код ще даде грешка, както е споменато по-долу:

(!) Грешка при разбор: грешка в синтаксиса, неочаквана „обществена“ (T_PUBLIC), очакващ идентификатор (T_STRING) в E: \ wamp \ www \ twit \ index.php на ред 2

Това остава същото и за частни и защитени.

<_?php
class private MyAccess (
var $var = "This is first var";
)
?>
class protected MyAccess (
var $var = "This is first var";
)
?>
<_?php
class private MyAccess (
var $var = "This is first var";
)
?>
class protected MyAccess (
var $var = "This is first var";
)
?>

2. Модификатор на частния достъп

Този модификатор ни използва частната ключова дума, за да я обработим. Не можем да използваме частния модификатор с класа. Можем да използваме това само с класните променливи и методите на класа (както споменахме в горната таблица). Когато декларираме и използваме частното, то не може да бъде достъпен с обекта на класа. Може да се използва само в рамките на класа.

Например

<_?php
class MyAccess (
var $var = "This is first var";
private $fist_name;
// simple class method
function returnVar() (
echo $this->fist_name;
)
function set_fist_name($set_this)(
$this->fist_name = $set_this;
)
)
$obj1 = new MyAccess();
echo $obj1->fist_name; // will give the error
$obj1->set_fist_name("Jai Shre");
$obj1->returnVar();
?>
echo $obj1->fist_name; // will give the error

Този ред код можем да използваме, тъй като това ще дойде с грешката. Това е нещо, до което не можем да осъществим достъп до частната променлива, използвайки обекта от този клас. Но можем да използваме това, като използваме неговата настройка и метода на getter, както използваме в горния код. $ obj1-> set_fist_name ("Jai Shre"); ред код ще зададе стойността в променливата и използва $ obj1-> returnVar (); можем да получим стойността на зададената променлива.

3. Защитен модификатор за достъп

Точно както публичните и частните, самият защитен не поддържа на ниво клас. Подобно на частен модификатор, защитен също ограничава достъпа до променливите на класа или функцията извън класа. Може да се използва в рамките на един и същи клас и от подклас (детски клас).

Например

<_?php
class MyAccess (
var $var = "This is first var";
protected $fist_name;
// simple class method
function returnVar() (
echo $this->fist_name;
)
function set_fist_name($set_this)(
$this->fist_name = $set_this;
)
)
class child extends MyAccess (
function setVal($set_this)(
$this->fist_name = $set_this;
)
function getVal()(
echo $this->fist_name;
)
)
$obj1 = new child();
//echo $obj1->fist_name; // will give the error
$obj1->setVal("Jai Shre");
$obj1->getVal();
?>

echo $ obj1-> fist_name; редът на кода ще даде грешката по-долу

изход:

Фатална грешка: Не мога да получите достъп до защитена собственост MyAccess :: $ fist_name в E: \ wamp \ www \ twit \ index.php на линия 20

4. Абстрактен модификатор за достъп

Може да се използва за класа и функцията, а не за променливата на класа. Ако някой клас има поне една абстрактна функция, той трябва да бъде деклариран като абстрактна. Не можем да създадем абстрактния клас. Абстрактен клас се счита главно за незавършен клас.

5. Модификатор на крайния достъп

Ако някой клас е деклариран като окончателен, не можем да го разширим. PHP ограничава окончателния клас от наследяване.

6. Статичен модификатор за достъп

Статичната ключова дума може да се използва за извършване на всяка функция като статична. Тя дава възможност на тази функция, така че човек да може да използва в рамките на създаването на обект от този клас, в който е деклариран. Пример за статичен метод -

public static function static Function()
(
// declaration goes here..
)

заключение

Винаги трябва да използваме модификатора на достъп според бизнес изискванията. Използвайки частни и защитени, можем да ограничим директното използване на частни променливи и частни методи извън декларирания клас.

Препоръчителни статии

Това е ръководство за Модификатори за достъп в PHP. Тук обсъждаме различните модификатори на достъп в PHP с примерите и изходите. Можете също да разгледате следната статия, за да научите повече -

  1. Абстрактен клас по PHP
  2. Модели в PHP
  3. PHP изявление за превключване
  4. Променливи в PHP
  5. C Ключови думи
  6. C # Ключови думи
  7. Статичен метод в PHP
  8. Статична ключова дума в С
  9. Превключване на изявление в C #
  10. Пълно ръководство за абстрактния клас в C #
  11. Пълно ръководство за статичния метод на JavaScript