访问修饰符是一种为任何其他 PHP 标识符的变量设置可访问范围和权限的方法。 PHP 支持各种关键字来使任何变量访问任何变量和标识符。我们可以将这些关键字分配给类、函数或标识符。这些关键字 – public、private、protected、abstract、final 等
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
与 Java 不同,PHP 的访问修饰符有一些限制。我们不能在类级别、函数级别和标识符级别上使用所有 PHP 访问修饰符。我们可以根据我们的业务需要使用这些访问修饰符来在整个程序或应用程序中授予权限或撤销权限。
以下是列表修饰符以及是否适用:
Access Modifier | Class Level | Function Level | Variable Level |
public | NA | YES | YES |
private | NA | YES | YES |
protected | NA | YES | YES |
abstract | YES | YES | NA |
final | YES | YES | NA |
Static | NA | YES | YES |
在上面的故事中,NA 表示不适用。这意味着我们不能在类级别上使用 public、private 和 protected。我们只能在类级别使用abstract和final。
下面是 PHP 中的以下访问修饰符
public 是 PHP 中默认的修饰符,就像 JAVA 一样。这意味着如果我们默认不使用任何具有标识符功能的修饰符,则它被视为公共访问修饰符。这是使用最广泛的之一。当我们谈到函数代码的可重用性时,我们通常使用 public 访问修饰符。因为 public 可以在任何地方使用,当然可以在类内、类外、扩展类中使用,并且如果该 public 可重用性不受任何类的限制,那么我们可以在包含该文件的任何地方使用它。正如上表中所提到的,我们不能将这个 public 修饰符与类以及 private 和 protected 一起使用。
现在,是时候看看公共访问修饰符的示例了:
<?php class MyAccess { var $var = "This is first var"; // print var variable value function returnVar() { echo $this->var; } } $obj1 = new MyAccess();$obj1->returnVar(); ?>
在上面的代码中,returnVar() 函数已定义为没有访问修饰符,因此它将像 public 一样工作,因为这是 PHP 语言中的默认修饰符。
public、private 和 protected 不适用于类级别;让我们看一个例子。
<?php class public MyAccess { var $var = "This is first var"; function returnVar() { echo $this->var; } } $obj1 = new MyAccess(); $obj1->returnVar(); ?>
上面的代码会出现如下错误:
( ! ) 解析错误:语法错误,意外的“public”(T_PUBLIC),E:wampwwwtwitindex.php 第 2 行中需要标识符 (T_STRING)
对于私有和受保护的情况也是如此。
<?php class private MyAccess { var $var = "This is first var"; } ?> <?php class protected MyAccess { var $var = "This is first var"; } ?>
这个修饰符使用 private 关键字来处理它。 我们不能在类中使用 private 修饰符。我们只能将其与类变量和类方法一起使用(正如我们在上表中提到的)。当我们声明并使用 private 时,不能使用类的对象来访问它。只能在班级内使用。
例如
<?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; // 会给出错误
我们可以使用这行代码,因为这会出现错误。这是我们无法使用该类的对象访问私有变量的原因。但是我们可以通过使用它的设置和 getter 方法来使用它,就像我们在上面的代码中使用的那样。 $obj1->set_fist_name(“Jai Shre”);代码行将设置变量中的值并使用 $obj1->returnVar();我们可以得到设置变量的值。
就像 public 和 private 一样,protected 本身不支持类级别。与 private 修饰符一样,protected 也限制类变量的访问或类外部的函数。它可以在同一个类中使用,也可以在子类(子类)中使用。
例如
<?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;该行代码将给出以下错误
输出:
致命错误:无法在线访问 E:wampwwwtwitindex.php 中的受保护属性 MyAccess::$fist_name 20
它可以用在类和函数上,不能用在类变量上。如果任何类至少有一个抽象函数,则必须将其声明为抽象。我们无法实例化抽象类。抽象类主要被认为是不完整的类。
如果任何类被声明为final,我们就不能扩展该类。 PHP限制final类被继承。
static 关键字可用于使任何函数成为静态函数。它启用了该函数的功能,以便人们可以在创建声明该函数的类的对象时使用它。静态方法示例 –
public static function static Function() { // declaration goes here.. }
我们应该始终根据业务需求使用访问修饰符。使用 private 和 protected,我们可以限制在声明的类外部直接使用私有变量和私有方法。
以上是PHP 中的访问修饰符的详细内容。更多信息请关注PHP中文网其他相关文章!