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:代表私有的,只能在该类中访问