PHP是一种极其流行的后端语言,对于开发者来说掌握PHP的访问控制和运算符优先级非常重要。下面我将为大家详细介绍这两个方面的内容。
PHP访问控制
PHP 有三种访问控制修饰符,它们分别是:public、protected 和 private。
public
当变量或方法被声明为 public 时,它们可以从任何地方进行访问。下面是一个示例:
class Car {
public $color = "red";
public function drive() {
echo "The car is driving.";
}
}
$myCar = new Car();
echo $myCar->color; // 输出 red
$myCar->drive(); // 输出 The car is driving.
在这个示例中,我们创建了一个名为 Car 的类,该类有一个名为 $color 的公共变量和一个名为 drive() 的公共方法。然后,我们使用 new 关键字创建了一个 Car 的实例,最后我们可以从实例中访问类的 $color 属性和 drive() 方法。
protected
当变量或方法被声明为 protected 时,它们不能从类外部进行访问。但是,可以从该类内部及其子类进行访问。下面是一个示例:
class Car {
protected $color = "red";
protected function drive() {
echo "The car is driving.";
}
}
class Audi extends Car {
public function getColor() {
return $this->color; // 这里 $color 在 Car 类中是 protected 的,可以在 Audi 类中直接访问。
}
}
$myAudi = new Audi();
echo $myAudi->getColor(); // 输出 red
在这个示例中,我们创建了一个名为 Car 的类,该类有一个名为 $color 的受保护变量和一个名为 drive() 的受保护方法。然后,我们创建了一个名为 Audi 的子类来继承 Car 类。在 Audi 类中,我们可以创建一个名为 getColor() 的方法来获取 $color 变量的值。
private
当变量或方法被声明为 private 时,它们只能从该类内部进行访问。它们不能在类的外部或其子类中访问。下面是一个示例:
class Car {
private $color = "red";
private function drive() {
echo "The car is driving.";
}
}
$myCar = new Car();
echo $myCar->color; // 这行代码会产生错误,因为 $color 是私有变量。
$myCar->drive(); // 这行代码会产生错误,因为 drive() 是私有方法。
在这个示例中,我们创建了一个名为 Car 的类,该类有一个名为 $color 的私有变量和一个名为 drive() 的私有方法。然后,我们使用 new 关键字创建了一个 Car 的实例。由于 $color 和 drive() 都是私有的,我们不能从实例中访问它们。
PHP运算符优先级
PHP运算符优先级描述了对于一条包含多个运算符的语句,PHP将按照优先级高低依次执行这些运算,以求得正确的计算结果。下面是一些常用运算符及其优先级:
运算符 | 描述 |
---|---|
clone 、(类型) |
类型转换和克隆 |
++ 、-- 、~ 、! |
操作符 (单目,非算术运算符) |
** |
指数 (比如,2 ** 3 为 8) |
* 、/ 、% |
算术运算符 |
+ 、- |
算术运算符 |
. |
字符串连接操作符 |
< 、<= 、> 、>= |
关系运算符 |
== 、!= |
相等运算符 |
=== 、!== |
全等运算符 |
&& |
逻辑 AND |
|| |
逻辑 OR |
?: |
三目运算符 |
= 、+= 、-= |
赋值运算符 |
, |
多条语句间的分隔符。其中只有最后一条语句(表达式)会返回 |
示例
下面是一些示例,演示了 PHP 运算符优先级的应用:
示例一:逻辑运算符和赋值运算符
$a = true;
$b = false;
$c = false;
if ($a || $b && $c) {
echo "true";
} else {
echo "false";
}
上面的代码中,如果 $a
是 true
,那么整个表达式结果就是 true
,不管 $b
和 $c
的值是什么。这是因为逻辑运算符 ||
的优先级要比逻辑运算符 &&
低。如果 $a
是 false
,那么整个表达式结果就是 $b && $c
的值,这是因为逻辑运算符 &&
的优先级要比赋值运算符 =
高。
示例二:算术运算符和括号
$a = 10;
$b = 20;
$c = 30;
$result = $a + $b * $c;
echo $result; // 输出 610
$result = ($a + $b) * $c;
echo $result; // 输出 900
上面的代码中,第一个表达式的结果是 $a + ($b * $c)
,因为乘法运算符 *
的优先级要比加法运算符 +
高。第二个表达式使用括号改变了优先级,所以结果是 ($a + $b) * $c
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP 关于访问控制的和运算符优先级介绍 - Python技术站