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

 

posted on 2016-10-24 10:32  小学员G  阅读(149)  评论(0编辑  收藏  举报