1 //面向对象
2 //面向过程
3 //$a = 10;
4 //$b = 15;
5 //echo $a+$b;
6
7 //面向对象
8 //1.什么叫做对象
9 //一切皆为对象
10 //2.什么叫做类
11 //由众多对象的抽象
12
13 //做类
14 class Ren
15 {
16 //通过变量和方法来描述人类的特征
17
18 //成员变量
19 public $name;
20 public $sex;
21
22 //构造方法
23 function __construct($n)
24 {
25 //$sex = $n; //错误
26 //$this关键字,在类里面代表该对象
27 $this->sex =$n; //正确
28 }
29
//魔术方法set
function __set($n,$v)
{
if($n=="age")
{
if($v>=18 && $v<=50)
{
$this->$n = $v;
}
}
else
{
$this->$n = $v;
}
}
//魔术方法get
function __get($n)
{
return $this->$n;
}
/*//设置age的值
function setage($a)
{
if($a>=18 && $a<=50)
{
$this->age = $a;
}
}
//获取age的值
function getage()
{
return $this->age;
}*/
30 //成员方法
31 public function Speak()
32 {
33 echo "正在讲话";
34 }
//析构方法
function __destruct()
{
echo "这是一个析构方法";
}
function __tostring()
{
return "这个类是人类";
}
35 }
36
37 $r = new Ren("男"); //实例化对象
38 var_dump($r);
39
40 $r1 = new Ren("女");
41 var_dump($r1);
42
43 //构造方法,始终存在,如果不写也是存在的
44
45 //var_dump($r);
46 //$r->name = "李四"; //赋值
47 //echo $r->name; //取值
48 //var_dump($r);
49 //$r->Speak();
50 //$r1 = new Ren(); //实例化对象
51 //$r1->name = "数据";
52
53 //var_dump($r==$r1);
54
//$r->age = 30;
//echo $r->age;
//$r->__get("age");
//$r->__set("age",20);
55
1 //构造方法:写法特殊,执行时间特殊
2
3 //OOP三大特性:封装,继承,多态
4
5 //封装的目的:为了让类更安全
6 //封装的做法:
7 //1.类里面的成员变量做为private
8 //2.使用成员方法来间接访问成员变量
9 //3.在该方法里面加限制条件
10
11 //php类里面不允许出现同名方法
12
13 //函数重载
14 //在类里面写多个同名方法来实现不同功能
15 /*public string Show()
16 {
17 return "显示";
18 }
19 public string Show(string a)
20 {
21 return a+"显示";
22 }
23 public string Show(string a,string b)
24 {
25 return a+b+"显示";
26 }
27 public string Show(int b)
28 {
29 return b+"数字";
30 }*/
31
32 //1.函数名必须相同
33 //2.参数个数不同或参数类型不同
34
35 //例子:求两个圆之间的阴影面积
36 /*$maxr = 20;
37 $minr = 10;
38 $mj = 3.14*$maxr*$maxr - 3.14*$minr*$minr;
39
40
41 class Yuan
42 {
43 //代表半径
44 public $r;
45
46 function __construct($n)
47 {
48 $this->r = $n;
49 }
50
51 //求面积的方法
52 function MJ()
53 {
54 return 3.14*$this->r*$this->r;
55 }
56 }
57
58 $r1 = new Yuan(20);
59 $r2 = new Yuan(10);
60
61 $mianji = $r1->MJ()-$r2->MJ();*/
62
63 //例子:计算器
64
65 $a = 10;
66 $b = 5;
67
68 $jia = $a+$b;
69 $jian = $a-$b;
70 $cheng = $a*$b;
71 $chu = $a/$b;
72
73
74 class jisuan
75 {
76 public $a;
77 public $b;
78
79 function __construct($n,$m)
80 {
81 $this->a = $n;
82 $this->b = $m;
83 }
84
85 function jia()
86 {
87 return $this->a+$this->b;
88 }
89 function jian()
90 {
91 return $this->a-$this->b;
92 }
93 function cheng()
94 {
95 return $this->a*$this->b;
96 }
97 function chu()
98 {
99 return $this->a/$this->b;
100 }
101 function quyu()
102 {
103 return $this->a%$this->b;
104 }
105 }
106
107 $j = new jisuan(10,5);
108 $j->quyu();
56 //访问修饰符
57 //public:代表公有的,在任何地方都可以访问
58 //protected:代表受保护的,只能在该类或该类的子类中访问
59 //private:代表私有的,只能在该类中访问