首页 > 代码库 > php 面向对象编程

php 面向对象编程

php 面向对象编程 

1:创建类 class

<?phpclass SimpleClass{        //define var        public $var = ‘a default value‘;        //method define        public function displyVar()        {                echo $this->var;        }}//SimpleClass::displyVar();$obje1=new SimpleClass();$obje1->displyVar();?>

2: 类的继承 extends

 <?phpclass Person{    public $city="济南";        //成员方法不能用类名调用 ,要用对象调用     public function sayHi($name=‘your name‘)    {        echo $name.‘say: hello everyone! I am from ‘.$this->city;        echo "</br>";        }            //static 是静态方法,可以用类名调用 Person::hi()    static  function hi($name=‘jack‘)    {        echo $name.‘say: hello everyone! I am from ‘;        echo "</br>";    }}$p1 = new Person();$p1->sayHi();$p1->city="北京";$p1->sayHi("cocoa");Person::hi("tom");Person::hi();echo "some city".$p1->city;class Student extends Person{    public $name="姓名";        public function study()    {       echo $this->name."good good study!"."</br>";    }}echo "<hr>";?>

3:类的访问权限设置 public,private,protected

<?php/***    访问权限    public : 公开的,子类,处部都可以访问,对象等可以访问    private: 私有的,只有在本类内部访问,子类外部不可访问,对象不可访问    protected:受保护的,子类可以访问,外部不可访问,对象也不可以访问*/class A{    public $public = "public var";    private $private = "private var";    protected $protected = "pritected var";        function hi()    {        echo $this->public."</br>";        echo $this->private."</br>";        echo $this->protected."</br>";    }}$a = new A();$a->hi();echo "<hr>";echo $a->public."</br>";    //可访问//echo $a->protected."</br>";    //不可访问//echo $a->private."</br>";    //不可访问echo "<hr>";class B extends A{    //可以对 public 和 protected进行重新定义,但是 private 的不能;    //protected $protected = "protected2";        function hi2()    {                 echo $this->public."</br>";        echo $this->private."</br>";        echo $this->protected."</br>";    }}$b = new B();$b->hi();$b->hi2();?>

 

4:抽象类 abstract

<?php/**    php抽象类 abstract    抽象类不能直接被实例化,必须由子类继承去实现;    抽象类必须至少有一个抽象方法;    抽象类可以有非抽象方法;        */abstract class A{    //强制要求子类实现的方法    abstract public function method();        abstract protected function method2();        //抽象方法不能声明为private    //abstract private function method4();                public function method3()    {        echo "method3 </br>";    }    }class B extends A{    public function method()    {        echo "method </br>";    }        protected function method2()    {        echo "method2";    }    public function hi()    {        $this->method2();    }}$b = new B();$b->method();$b->method3();$b->hi();?>

5: 接口实现 interface,implements

<?php/** php 接口    指定某个类必须实现哪些方法;        接口中的方法必须是 public的    关键字 interface        一个类可以实现多少个接口    接口中的可以定义常量,都是定值,不能修改*/interface A{    //接口的方法,必须都是public的    public function methodA();    public function methodB();}interface C{    //接口里面声明常量,不可改变    const varIP = ‘192.168.8.35‘;    public function methodC();}//实现class B implements A,C{    public function methodA()    {        echo "implements methodA </br>";    }        public function methodB()    {        echo "implements methodB </br>";            }    public function methodC()    {        echo "implements methodC</br>";    }}$b = new B();$b->methodA();$b->methodB();$b->methodC();//常量访问echo C::varIP;?>

6: 构造方法: __construct()

<?phpclass B{    function __construct()    {        echo "this is B init method</br>";    }}$b = new B();class C extends B {    //继承关系的话,会先调用父类的 构造方法,然后执行自己的构造方法;    //也可以自己手动调用父类的构造方法,关键字 parent::        function __construct()    {        parent::__construct();        echo "this is C init method </br>";    }}$c = new C();?>

7: 析构方法 __destruct()

<?phpclass B{    function __construct()    {        echo "this is B init method</br>";    }        function __destruct()    {        echo "this is B Class Destroying</br>";    }}//$b = new B();class C extends B {    //继承关系的话,不会先调用父类的 构造方法,需要自己手动调用 ,然后执行自己的构造方法;    //手动调用父类的构造方法,关键字 parent::        function __construct()    {        parent::__construct();        echo "this is C init method </br>";    }    //析构造方法也是,子类不会主动调用父类的析构方法,要手动调用    function __destruct()    {        parent::__destruct();        echo "this is C Class Destroying</br>";    }}$c = new C();?>

8:  常量 const , self,$this

<?phpclass A{    function foo()    {        if (isset($this)) {            echo ‘$this is defined (‘;            echo get_class($this);            echo ") ";        } else {            echo "$this is not defined. ";        }    }}class B{    function bar()    {        A::foo();    }}$a = new A();$a->foo();A::foo();$b = new B();$b->bar();B::bar();    ?><?phpclass Person{    const IP_ADDRESS= "192.168.8.35";    public function hi()    {        echo self::IP_ADDRESS."</br>";    }        //self 是指类本身,可调用类方法和常量;    //$this 是的是 new出来的对象,可调用对象属性和成员方法;        }echo Person::IP_ADDRESS."</br>";$p = new Person();$p->hi();?>
View Code

9: 对象迭代 foreach

<?php/**    对象迭代    php提供了对象迭代功能,就像数组那样,可以通过foreach来遍历对象中的所有属性,    所有外部可见的属性;*/class A{    public $var1 = ‘var 1‘;    public $var2 = ‘var 2‘;        protected $var3 = ‘protected var 3‘;    private $var4 = ‘private var 4‘;        function allVar()    {        echo ‘<hr>‘;        foreach($this as $key=>$var)        {            echo $key.‘->‘.$var."</br>";        }    }}$a = new A();//外部迭代foreach($a as $key=>$var){        echo $key.‘->‘.$var.‘</br>‘;}//内部迭代$a->allVar();?>
View Code