zoukankan      html  css  js  c++  java
  • 封装(面向对象特性之一)

    实验  1

    class  Ren        ----定义一个类

    {

      private $name;     ----私有的成员

    }

    $r = new Ren();      ----造一个人

    $r->name;    ----外部调用 name  输出报错(private特性)

    实验  2

    class Ren    ----定义一个类

    {

      private $name;  ----私有成员

      function  setName($n)    ----在类内 做一个方法

      {

        $this->name = $n;  ----调用参数

      }

    }

    $r = new Ren();    ----造一个人

    $r->setName("张三");  ----设置name值 为"张三"

    var_dump($r);      ----输出成功

     可以通过在类内设置方法间接访问 private

    实验  3

    class Ren    ----定义一个类

    {

      private $name;  ----私有成员

      function  setName($n)    ----在类内 做一个方法

      {

        $this->name = $n;  ----调用参数

      }

      function getName()    ----获取name值

      {

        return $this->name;  ----返回name的值

      }

    }

    $r = new Ren();    ----造一个人

    $r->setName("张三");  ----设置name值 为"张三"

    echo $r->getName();

    输出结果为  张三

    实验  4

    class Ren    ----定义一个类

    {

      private $age;  ----私有成员   假设age 18-50之间

      function  setAge($n)    ----在类内做一个方法,一般情况下为public公共属性,都可调用,随意                 更改,不可控

                     通过加逻辑语句控制类 使类更安全

                     

      {

        if($n>=18  &&  $n<=50)          **添加的逻辑语句

        {

        $this->Age = $n;  ----调用参数

        }

      }

      function getAge()    ----获取值

      {

        return $this->age;  ----返回age的值

      }

    }

    封装总结:

    目的:为了使类更加安全

    做法:

    1、将成员变量变为私有  (实验2)

    2、做一个成员方法来间接访问 (实验3)

    3、在该方法里面加限制条件(实验4)

    封装的基本方法:

    function  setAge($n)    

      {

        if($n>=18  &&  $n<=50)          **添加的逻辑语句

        {

        $this->Age = $n;  ----调用参数

        }

      }

      function getAge()    ----获取值

      {

        return $this->age;  ----返回age的值

      }

    类似与面向过程,针对性强。若面向对象数少时为不二选择,若面向对象数大时,代码量至少会翻倍(一个对象,写两个方法;两个,写四个;三个,写六个……)

    魔术方法:给变量赋值

    按常规方法

    例:

    function __set($n,$v)    ---拉取两个值 $n函数名,$v函数值

    {

      if($n=="age")      ---如果$n是age

      {

        if($v>=18  &&  $v<=50)   ---如果$n的值$v 满足条件

        {

          $this->$n = $v;    ---调用这个函数$n , $n的值是$v

        }

      }

      else                ---其他的

      {

        $this->$n = $v;        ---直接赋值

      }

    }

    function __get($n)    ---直接写函数名

    {

      return $this->$n;    ---返回函数值

    }

    总结:

    魔术方法更适合封装。只需要拉取两个变量(函数名,函数值)按常规方式设置、返回 加约束条件即可。

    魔术方法可无限次使用

  • 相关阅读:
    if 语句练习 身高体重问题
    阶乘
    if语句和switch语句
    Java 运算符
    Centos上把新安装的程序添加到系统环境变量的两种方法
    申请 Let’s Encrypt 泛域名证书 及 Nginx/Apache 证书配置
    Centos 6.5安装OpenSSL
    openssl version 查看openssl 版本出现openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory,怎么办
    ab压力测试遭遇apr_socket_recv: Connection reset by peer (104) 怎么办
    配置apache实现对网站某一目录的访问自动跳转到指定目录
  • 原文地址:https://www.cnblogs.com/zhangbaobao/p/6727258.html
Copyright © 2011-2022 走看看