搜索
首页后端开发php教程在 PHP 中受保护

在 PHP 中受保护

Aug 29, 2024 pm 01:08 PM
php

关键字基本上是一组特殊单词,在每种编程语言中出于特定目的而保留。它们可以是命令,也可以是参数,并且不能像变量名一样通用。 PHP 中的 protected 是在包括 PHP 在内的所有语言中预定义的,也称为保留名称。

广告 该类别中的热门课程 PHP 开发人员 - 专业化 | 8 门课程系列 | 3次模拟测试

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

PHP中有5种访问修饰符:

  • 公开
  • 私人
  • 受保护
  • 摘要
  • 决赛

本文中我们将仅关注受保护的访问修饰符。除了变量之外,protected 关键字还用于将方法/函数和属性声明为受保护。除非明确指定,否则所有变量和方法默认都是公共的。受保护的变量降低了相应变量或方法的可见性,因为它的访问仅限于声明它的类。受保护的访问修饰符不能应用于类。

但是,它们可以由从其父类继承的子类调用。因此,可以通过在所需方法或变量前面添加“protected”关键字来将其声明为受保护。

语法

<?php //declaration of protected variable
protected $<variable_name> = value;
//declaration of protected property
protected $proc = 'protected property';
//declaration of protected function
protected function function_name(){
//PHP code goes here
}
?>

在这里我们可以看到,使用 protected 关键字我们声明了变量和函数名称。

protected 修饰符在 PHP 中的工作:与 private 访问修饰符一样,我们也可以使用 protected 来限制类外部的类函数和变量的使用和访问。但受保护的私有变量的一个例外是,可以通过子类中的父类继承来访问它们。

受保护变量和方法的示例

让我们通过下面一个简单的例子来详细了解 protected 修饰符的用法和工作原理:

示例#1

代码:

<?php // Declaration of Main class
class Math {
protected $a = 30;
protected $b = 10;
// Declaration of division function
function division()
{
echo $div=$this->a/$this->b;
echo "\n";
}
protected function multiply()
{
echo $mul=$this->a*$this->b;
echo "\n";
}
}
// Declaration of child class addn inherited from above class
class addn extends Math {
// Declaration of addition function
function addition()
{
echo $division=$this->a+$this->b;
}
}
$obj= new addn;
$obj->division();
$obj->addition();
$obj->multiply();
?>

输出:

在 PHP 中受保护

在第 29 行注释后,尝试调用受保护的方法

在 PHP 中受保护

在上面的示例中,我们展示了不同的数学运算,例如加法、除法和乘法。首先,我们声明不带任何访问修饰符的 Division() 函数。因此,默认情况下,它是公共的,并且当我们通过创建其对象来调用该函数时,我们对变量 a 和 b 执行的除法值将显示在输出中。但是当我们尝试调用受保护的函数multiply()时,我们得到内联34错误,指出受保护的方法无法被调用。

而我们可以通过继承调用并获取受保护方法的值,如图所示。这里的子类 and 是从父类 Math 继承的,因此我们能够调用受保护的变量 a 和 b 而不会出现任何错误。

示例#2

代码:

<?php class Animal {
// Declaration of protected variable $animal
protected $animal = array("Dog", "Cat", "Cow");
// Declaration of protected function for Animal description
protected function getDescription($animal) {
if($animal == "Dog") {
echo "Dogs are the most loyal animals";
}
else if($animal == "Cat") {
echo "Cats are very smart";
}
else if($animal == "Cow") {
echo "Cows are worshipped in India";
}
}
}
// Declaration of sub class of above Animal class
class Dog extends Animal {
protected $animal = "Dog";
// Declaration of public function to print dog's description
public function getDogDescription() {
// Here we call the protected getDescription() method of parent class Animal
$this->getDescription($this->animal);
}
}
// Creating an object of class Animal
$animal = new Animal();
// Creating an object of subclass Dog
$dog = new Dog();
/*
Trying to access protected variables and methods
*/
echo $animal->animal; // Cannot be accessed
$animal->getDescription("Dog"); // Cannot be accessed
echo $dog->animal; // Cannot be accessed
/*
We can call getDogDescription method,
in which we are calling a protected method
of Animal class
*/
$dog->getDogDescription();
?>

输出:

在 PHP 中受保护

评论第 34 行后

在 PHP 中受保护

注释第 35 行和 36 行后

在 PHP 中受保护

在这个例子中,我们首先声明主父类 Animal 并将受保护的变量初始化为 $animal,它是一个包含 3 个不同动物名称的数组。接下来,我们还声明一个受保护的函数,在该函数中我们为数组中的每个动物提供唯一的描述。

由于可以使用子类访问受保护的变量,因此我们在这里从父类 Animal 创建另一个子类 Dog。另外为了展示公共函数可以在任何地方访问,我们声明一个公共函数来输出变量dog的描述。

接下来,我们创建 Animal 类和 Dog 类的对象,并尝试访问它们受保护的变量。因此,对于第 40、41 和 42 行,我们收到一个致命错误,告知受保护的属性/方法/变量无法访问。因此,我们无法访问 Animal 类之外的任何变量,因为所有变量都受到保护。

PHP 中受保护的重要性

  • protected 修饰符基本上降低了变量/方法的可见性,因此比可以在任何地方访问的 public 访问修饰符更安全。
  • 只有子类可以访问受保护的方法,任何类都不能访问。
  • 当我们将其设置为受保护时,该类的实用性就变得非常清楚。当有一堆数据并且我们需要在这上面做一个明确的标记时,这真的很有帮助。
  • 受保护的变量和成员对于声明它们的类以及从父类继承此属性的子类来说是公共的。
  • 它提供二级安全性,比最安全的 private 低一级,仅次于不太安全的 public 修饰符。
  • 它帮助开发人员描述可共享成员和不可共享成员,并帮助将它们限制在类的范围内。

结论

因此,受保护的变量是用于控制类中专门定义的变量或方法或属性的访问修饰符。它需要通过前缀显式指定,因此只能在其声明的包内以及从父包继承的子类中访问。

以上是在 PHP 中受保护的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP行动:现实世界中的示例和应用程序PHP行动:现实世界中的示例和应用程序Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP:轻松创建交互式Web内容PHP:轻松创建交互式Web内容Apr 14, 2025 am 12:15 AM

PHP可以轻松创建互动网页内容。1)通过嵌入HTML动态生成内容,根据用户输入或数据库数据实时展示。2)处理表单提交并生成动态输出,确保使用htmlspecialchars防XSS。3)结合MySQL创建用户注册系统,使用password_hash和预处理语句增强安全性。掌握这些技巧将提升Web开发效率。

PHP和Python:比较两种流行的编程语言PHP和Python:比较两种流行的编程语言Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP的持久相关性:它还活着吗?PHP的持久相关性:它还活着吗?Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP的当前状态:查看网络开发趋势PHP的当前状态:查看网络开发趋势Apr 13, 2025 am 12:20 AM

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP与其他语言:比较PHP与其他语言:比较Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP与Python:核心功能PHP与Python:核心功能Apr 13, 2025 am 12:16 AM

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP:网络开发的关键语言PHP:网络开发的关键语言Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。