在php中内置了一些限制访问成员属性以及方法的权限关键词,使用这些关键词可以去控制成员的访问权限。
1、public(公共成员)
实例
<?php
// public 关键字
class pub{
public function pub_s(){ //创建一个公共成员方法
echo '我正在学习php中的public成员控制关键字';
}
}
//公共成员可以在子类被调用
class pubson extends pub {
public function pub_son(){
return parent::pub_s(); //调用父级方法
}
}
//实例化 pub
$pub = new pub();
//调用父级对象pub
$pub->pub_s(); //输出结果为 我正在学习php中的public成员控制关键字
echo '<hr>以下是子类调用父类公共成员方法<br>';
//实例化子类
$pubson = new pubson();
//调用子类
$pubson -> pub_son(); //输出结果为 我正在学习php中的public成员控制关键字如上图实例我们可以看到public关键词定义的成员属于和方法,无论是在类的外部,内部以及子类都是可以顺利的被调用的。
2、private(私有成员)
实例
<?php
// private 关键字
class _private{
private $name = 'php';
private function _private_s(){
echo 'php中的private';
echo $this->name;
}
}
class _private_son extends _private{
public function _private_son_s(){
parent::_private_s(); //调用父级类下面的_private_s方法
}
}
// 实例化 _private 类
$_private = new _private();
// 调用 _private 下面的 _private方法
$_private -> _private_s(); //报了一个 Uncaught Error 错误 在类外无法调用private定义的方法或属性
//实例化 子类 _private_son
$_private_son = new _private_son();
//调用 _private_son下面的_private_son_s方法;
$_private_son -> _private_son_s(); //报了一个 Uncaught Error 错误 在类外无法调用private定义的方法或属性根据上面的实例,我们能发现,如果说要是使用了private字段,那么被定义的方法或者属性就无法在子类或者类外访问了,但是可以在类内访问,如下实例。
<?php
// private 关键字
class _private{
private $name = 'php'; //将该属性定义为私有成员
public function _private_s(){
echo 'php中的private关键词字段';
echo $this->name; //调用私有成员
}
}
//实例化
$_private = new _private();
//调用_private_s方法
$_private -> _private_s(); //返回结果:php中的private关键词字段php因此,对数据进行封装的时候,如果说有些成员属性或者变量只在类内访问的话,可以选择使用private关键词。
3、protected(保护成员)
实例
<?php
// protected关键词
class _protected{
protected $name = 'php';
protected function _protected_str(){
echo '我正在学习PHP中的protected关键字<br>';
}
protected function _protected_s(){
self::_protected_str(); //调用类内protected关键字定义的方法,结果:成功调用
echo $this->name;
}
}
class _protected_son extends _protected{
public function _protected_son_s(){
return parent::_protected_s();//调用父级类下面的_protected_s方法
}
}
//实例化_protected
$_protected = new _protected();
//$_protected->name; //在外部无法调用protected关键词保护的成员属性,否则会抛出一个Fatal error
//$_protected -> _protected_s(); //在外部无法调用protected关键词保护的成员方法,否则会抛出一个Fatal error
//实例化子类_protected_son
$_protected_son = new _protected_son();
$_protected_son -> _protected_son_s(); //在子类可以成功调用protected关键字定义的成员方法根据上述实例,我们得出,protected关键词定义的方法和属性在类外是无法被调用的,但是在子类以及类内是可以成功被调用的。
总结:public字段定义的成员可以在任意地方被调用,private字段定义的成员只能在类内被调用,protected字段定义的成员可以在类内以及子类被调用。之所以要定义这三个字段是因为自己在开发的时候,把无需再类外调用的函数都封装起来,方便自己后面二次开发以及别人维护的时间成本。




还没有评论,来说两句吧...