您现在的位置是:首页 > web开发 > PHP面向对象 – 封装

PHP面向对象 – 封装

web开发作者:dayu日期:11天前点击:8
copy
技术分享技术分享

  1. <spanstyle="font-size:18px;"><?php
  2. classPerson{
  3. public$name;
  4. private$age;
  5. private$salary;
  6. function__construct($name,$age,$salary){
  7. $this->name=$name;
  8. $this->age=$age;
  9. $this->salary=$salary;
  10. }
  11. }
  12. $a1=newPerson("小明",32,5000);
  13. //正确显示,全局属性访问没有限制
  14. echo"<br>".$a1->name."<br>";
  15. //报错,私有属性不能在类外访问
  16. //echo"<br>".$a1->age."<br>";
  17. //报错,私有属性不能在类外访问
  18. //echo"<br>".$a1->salary."<br>";
  19. ?></span>


php提供了三种访问控制符号来控制方法和属性(变量)的访问权限.

1. public 表示全局,可以在本类,类外部,子类 中使用
2. protected 表示受到保护, 可以在本类, 子类中使用,不能在类外使用n
3. private 表示私有, 只能在本类中使用,不能在类外使用,即在其他地方new了本类,也不能调用该方法


这三个控制修饰符号可以对 属性 和 方法进行修饰
1. 如果一个方法没有访问修饰符,则默认是public

2. 属性 必须指定访问修饰符,若没有访问修饰符,会报错。

3. 私有方法前面最好加下划线,如:private function _save(){}


//方法之间可以互相调用. 但是需要使用 $this引用
function test11()
{
$this->test12();
}
protected function test12()
{
echo "test12 hello";
}

举例说明:

[php]view plaincopy
技术分享技术分享

  1. <?php
  2. classPerson1{
  3. public$name;
  4. protected$age;
  5. private$salary;
  6. function__construct($name,$age,$salary){
  7. $this->name=$name;
  8. $this->age=$age;
  9. $this->salary=$salary;
  10. }
  11. //成员方法
  12. publicfunctionshowInfo(){
  13. //这里说明在本类中可以使用publicprotected和private修饰的变量.
  14. echo$this->name."||".$this->age."||".$this->salary;
  15. }
  16. functiontest(){
  17. //调用showInfo()方法,利用this引用
  18. $this->showInfo();
  19. }
  20. }
  21. //创建一个人
  22. $p1=newPerson1("孙悟空",30,1000);
  23. $p1->test();
  24. ?>

若想在类外去访问protected 变量或者 private 变量, 通常的做法是在类中创建 public 方法去访问 这些变量. 形式是
public function setXxx($val){
}
public function getXxx(){
}
public function showInfo(){
}

举例说明:

[php]view plaincopy
技术分享技术分享

    1. <?php
    2. classPerson2{
    3. public$name;
    4. protected$age;
    5. private$salary;
    6. function__construct($name,$age,$salary){
    7. $this->name=$name;
    8. $this->age=$age;
    9. $this->salary=$salary;
    10. }
    11. //成员方法
    12. publicfunctionshowInfo(){
    13. //这里说明在本类中可以使用publicprotected和private修饰的变量.
    14. echo"<br>".$this->name."||".$this->age."||".$this->salary;
    15. }
    16. }
    17. //创建一个人
    18. $p1=newPerson2("猪八戒",20,5000);
    19. //访问其详细信息,由于属性age和salary分别为保护和私有变量,若在类外直接访问
    20. //其属性会报错,但在类中创建一个公共属性的函数,通过函数即可访问这些变量。
    21. $p1->showInfo();
    22. ?>

PHP面向对象 – 封装

原文地址:http://www.cnblogs.com/limingxishuai666/p/7191660.html


下一篇       上一篇