主页 > 知识库 > 网络编程 > PHP >

PHP

PHP面向对象之private权限控制

来源:中国IT实验室 作者:佚名 发表于:2013-06-08 15:59  点击:
/*** ====笔记部分==== 权限修饰符 作用: 用来说明 属性/方法的权限特点 写在 属性/方法前面 共有3个权限修饰符 private 私有的 , 保护的最严 protected 保护的 public 公共的 ,保护的最松 疑问: public修饰的属性/方法,可以在哪儿访问? private 修饰的属性/
/***
  ====笔记部分====
  权限修饰符
  作用: 用来说明 属性/方法的权限特点
  写在 属性/方法前面
  共有3个权限修饰符
  private 私有的  , 保护的最严
  protected 保护的
  public 公共的    ,保护的最松
  疑问:
  public修饰的属性/方法,可以在哪儿访问?
  private 修饰的属性/方法,可以在哪儿访问?
  如何判断属性/方法 有没有权限访问?
  答:看访问时的位置!
  private的属性/方法,只能在类定义的大括号内{},才能访问
  public 的属性, 在任意位置都可以访问
  ***/
  [php]
  <?php
  class human{
  public $mood='';// 心情,公有
  private $money=500;// 钱,私有的
  public function getmoney(){
  return $this->money;
  }
  //定义私有秘密方法
  private function secret(){
  echo '我那天偷吃了一块糖';
  }
  //告诉我你的秘密方法
  public function tellme(){
  $this->secret();
  }
  }
  $lisi=new human();
  $lisi->mood='happay';
  echo $lisi->mood,'<br />';//happay
  echo $lisi->getmoney(),'<br />';//500
  //echo $lisi->money=300;//对象不可以调用私有属性
  //Fatal error: Cannot access private property human::$money in C:\wamp\www\php\private.php on line 31
  //$lisi->secret();//对象不可以调用私有方法
  //Fatal error: Call to private method human::secret() from context '' in C:\wamp\www\php\private.php on line 32
  $lisi->tellme();    // 可以,因为是通过第17行,即,类内调用的.
  /*
  总结: private权限控制
  只能在类的{} 内调用,
  走出了{}, 谁也调不动.
  */
  ?>
  <?php
  class human{
  public $mood='';// 心情,公有
  private $money=500;// 钱,私有的
  public function getmoney(){
  return $this->money;
  }
  //定义私有秘密方法
  private function secret(){
  echo '我那天偷吃了一块糖';
  }
  //告诉我你的秘密方法
  public function tellme(){
  $this->secret();
  }
  }
  $lisi=new human();
  $lisi->mood='happay';
  echo $lisi->mood,'<br />';//happay
  echo $lisi->getmoney(),'<br />';//500
  //echo $lisi->money=300;//对象不可以调用私有属性
  //Fatal error: Cannot access private property human::$money in C:\wamp\www\php\private.php on line 31
  //$lisi->secret();//对象不可以调用私有方法
  //Fatal error: Call to private method human::secret() from context '' in C:\wamp\www\php\private.php on line 32
  $lisi->tellme();    // 可以,因为是通过第17行,即,类内调用的.
  /*
  总结: private权限控制
  只能在类的{} 内调用,
  走出了{}, 谁也调不动.
  */
  ?>

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%