面向对象 - 作用域 ¶
作者:KK
发表日期:2017.2.17
方法的作用域 ¶
方法和属性都有作用域的特性,其实前面介绍方法和属性的时候,用的都是公有
作用域,下面我定义一个带私有
作用域方法的类:
class User{
public function say(){
$name = $this->getName();
echo $name;
}
private function getName(){
return 'Jay';
}
}
上面User类的getName方法在前面用了private
这个关键词进行了修饰,这样就说明它的作用域是私有的
私有的方法不可以被外面调用,只能被自己的其它方法调用,比如公有say方法调用私有方法getName:
$user = new User();
$user->say(); // Jay
$user->getName(); //报错消息 Call to private method User::getName() from context
如果希望某些方法不被外面调用,只被自己调用来支持完成其它事情,那就可以将这个方法定义为私有方法
属性作用域 ¶
懂了方法的作用域之后,属性也很容易理解了,直接看代码:
class User{
public $name = 'Jay';
private $age = 11;
}
$user = new User();
echo $user->name;
echo $user->age; //报错,因为调用了一个私有的属性,这是禁止的
保护作用域 ¶
除了public
(公有)和private
(私有)两个最常见的作用域以外,还有一个作用域就是protected
(保护)作用域
保护作用域也是私有作用域的一种,先初步认识一下:
class User{
protected $age = 11;
}
$user = new User();
echo $user->age; //报错,因为保护作用域也是私有的
与私有作用域的区别 ¶
首先私有作用域只允许
在这个类里面的代码进行互相调用,不允许其它地方调用
保护作用域则是不允许外部调用,但允许在这个类里面的代码调用,又允许父类或者子类调用
如果新手按顺序看我的文章这样下来还没学