首页 > 代码库 > 10月24日下午PHP封装

10月24日下午PHP封装

  1 <?php
  2 
  3 class Ren
  4 {
  5     private $name;
  6     private $sex;
  7     private $age; //年龄必须在18-50之间
  8     
  9     function __construct($v)
 10     {
 11         $this->sex = $v;
 12     }
 13     //魔术方法set
 14     function __set($n,$v)
 15     {
 16         if($n=="age")
 17         {
 18             if($v>=18 && $v<=50)
 19             {
 20                 $this->$n = $v;
 21             }
 22         }
 23         else 
 24         {
 25             $this->$n = $v;
 26         }
 27     }
 28     
 29     //魔术方法get
 30     function __get($n)
 31     {
 32         return $this->$n;
 33     }
 34     
 35     /*//设置age的值
 36     function setage($a)
 37     {
 38         if($a>=18 && $a<=50)
 39         {
 40             $this->age = $a;
 41         }
 42     }
 43     //获取age的值
 44     function getage()
 45     {
 46         return $this->age;
 47     }*/
 48     
 49     function say()
 50     {    
 51         echo "hello"; 
 52     }
 53     
 54     //析构方法
 55     function __destruct()
 56     {
 57         echo "这是一个析构方法";
 58     }
 59     
 60     function __tostring()
 61     {
 62         return "这个类是人类";
 63     }
 64     
 65     
 66 }
 67 
 68 $r = new Ren("男");
 69 
 70 //$r->setage(20);
 71 //echo $r->getage();
 72 
 73 $r->say();
 74 //$r->age = 30;
 75 
 76 //echo $r->age;
 77 
 78 //$r->__get("age");
 79 
 80 //$r->__set("age",20);
 81 
 82 var_dump($r);
 83 
 84 //构造方法:写法特殊,执行时间特殊
 85 
 86 //OOP三大特性:封装,继承,多态
 87 
 88 //封装的目的:为了让类更安全
 89 //封装的做法:
 90 //1.类里面的成员变量做为private
 91 //2.使用成员方法来间接访问成员变量
 92 //3.在该方法里面加限制条件
 93 
 94 //php类里面不允许出现同名方法
 95 
 96 //函数重载
 97 //在类里面写多个同名方法来实现不同功能
 98 /*public string Show()
 99 {
100     return "显示";
101 }
102 public string Show(string a)
103 {
104     return a+"显示";
105 }
106 public string Show(string a,string b)
107 {
108     return a+b+"显示";
109 }
110 public string Show(int b)
111 {
112     return b+"数字";
113 }*/
114 
115 //1.函数名必须相同
116 //2.参数个数不同或参数类型不同
117 
118 //例子:求两个圆之间的阴影面积
119 /*$maxr = 20;
120 $minr = 10;
121 $mj = 3.14*$maxr*$maxr - 3.14*$minr*$minr;
122 
123 
124 class Yuan
125 {
126     //代表半径
127     public $r;
128     
129     function __construct($n)
130     {
131         $this->r = $n;
132     }
133     
134     //求面积的方法
135     function MJ()
136     {
137         return 3.14*$this->r*$this->r;
138     }
139 }
140 
141 $r1 = new Yuan(20);
142 $r2 = new Yuan(10);
143 
144 $mianji = $r1->MJ()-$r2->MJ();*/
145 
146 //例子:计算器
147 
148 $a = 10;
149 $b = 5;
150 
151 $jia = $a+$b;
152 $jian = $a-$b;
153 $cheng = $a*$b;
154 $chu = $a/$b;
155 
156 
157 class jisuan
158 {
159     public $a;
160     public $b;
161     
162     function __construct($n,$m)
163     {
164         $this->a = $n;
165         $this->b = $m;
166     }
167     
168     function jia()
169     {
170         return $this->a+$this->b;
171     }
172     function jian()
173     {
174         return $this->a-$this->b;
175     }
176     function cheng()
177     {
178         return $this->a*$this->b;
179     }
180     function chu()
181     {
182         return $this->a/$this->b;
183     }
184     function quyu()
185     {
186         return $this->a%$this->b;
187     }
188 }
189 
190 $j = new jisuan(10,5);
191 $j->quyu();
192 
193 
194 
195 ?>

 

10月24日下午PHP封装