php有哪些访问控制符
本篇内容介绍了“php有哪些访问控制符”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
php的访问控制符有:1、public,将属性或方法设置为可从任何地方访问;2、private,将属性或方法设置为只能由其自己的类或对象访问;3、protected,将属性或方法设置为可由其类或其后代访问。
本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑
访问控制修饰符列表
访问修饰符 | 含义 |
---|---|
Public | 将属性或方法设置为可从任何地方访问 |
Private | 将属性或方法设置为只能由其自己的类或对象访问 |
Protected | 将属性或方法设置为可由其类或其后代访问 |
public
公共属性和方法可以从任何地方访问。
<?PHPclass Book { public $Name; public function say() { print "PHP!\n"; }}class PythonBook extends Book { public function say() { print "Python!\n"; }}$aBook = new PythonBook;$aBook->Name = "Python";print $aBook->Name;?>
默认情况下,所有类方法都是public的。
上面的代码生成以下结果。
private
私有属性只能在自己的类中访问。
<?PHPclass Book { private $Name; private $NameTag; public function setName($NewName) { // etc }}?>
子类无法访问私有父方法和属性。如果你想这样做,你需要protected关键字。
Protected
受保护的属性和方法可在其自己的类和子类中访问。考虑下面的代码:
<?PHPclass Book { public $Name; protected function getName() { return $this->Name; }}class Poodle extends Book { public function say() { print ""Book", says " . $this->getName(); }}$aBook = new Poodle;$aBook->Name = "PHP";$aBook->say();?>
上面的代码生成以下结果。
例子
下面的代码显示了如何使用Private成员隐藏信息。
<?php class Widget { private $name; private $price; private $id; public function __construct($name, $price) { $this->name = $name; $this->price = floatval($price); $this->id = uniqid(); } //checks if two widgets are the same public function equals($widget) { return(($this->name == $widget->name) AND ($this->price == $widget->price)); } } $w1 = new Widget("Cog", 5.00); $w2 = new Widget("Cog", 5.00); $w3 = new Widget("Gear", 7.00); //TRUE if($w1->equals($w2)) { print("w1 and w2 are the same<br>\n"); } //FALSE if($w1->equals($w3)) { print("w1 and w3 are the same<br>\n"); } //FALSE, == includes id in comparison if($w1 == $w2) { print("w1 and w2 are the same<br>\n"); }?>
上面的代码生成以下结果。
“php有哪些访问控制符”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341