PHP面向对象相关特性

来源:互联网 发布:淘宝如何分享链接 编辑:程序博客网 时间:2024/06/07 11:44

1.类,命名空间,成员方法和类方法

定义类,hello.php:
<?phpclass Hello{    public function sayHello(){        echo 'hello php';    }}class Desktop{//一个php可以写多个类    public function  work(){        echo 'work';    }}
调用:
<?php/*面向对象特性在php5后出现*/require_once 'hello.php';$h = new Hello();$h->sayHello();//hello php$d = new Desktop();$d->work();//work

命名空间

新建文件选择php class

放入文件夹m,
<?php//命名空间namespace m;class HELLO2{    public function sayHello()    {        echo 'hello m';    }}
同样方法建个放入m2:
<?phpnamespace mm;class HELLO2{    public function sayHello()    {        echo 'hello mm';    }}
调用:
<?phprequire_once 'm/HELLO2.php';require_once 'm2/HELLO2.php';$h = new \m\HELLO2();$h->sayHello();//hello mecho '<br>';$h2 = new \mm\HELLO2();$h2->sayHello();//hello mm

成员方法和类方法

Man.php
<?phpclass Man {    public function __construct(){//__construct()  构造方法        echo '构造方法在创建类的实例就执行';    }}
调用:
<?phprequire_once 'Man.php';$m = new Man();

Man2.php

<?phpclass Man2 {   /* 输入  /**后回车  */    /**     * @param $age int 年龄     * @param $name string 姓名     */    public function __construct($age,$name){//__construct()        $this->age = $age;        $this->name = $name;    }    public function getAge(){//成员方法        return $this->age;    }    public function getName(){        return $this->name;    }    private  $age,$name;    //类方法,成员方法前+static,又叫静态方法  用来描述类的    public static function sayHello(){        echo '用来描述属性';    }    private static $NUM = 0;//静态变量,只在类内部使用    const MAX_NUM=10;//静态常量    public static function sayHello2(){        Man2::$NUM++;        if(Man2::$NUM>Man2::MAX_NUM){            throw new Exception('抛出异常');        }    }}
/**
* @param $age int 年龄
* @param $name string 姓名
*/

调用加提示

调用:

<?phprequire_once 'Man2.php';$m2 = new Man2(10,'m');//echo $m2->getName();//m//静态方法用::执行//Man2::sayHello();//类方法/静态方法 ::执行/*for($i=0;$i<10;$i++){    Man2::sayHello2();//没输出}*//*for($i=0;$i<11;$i++){    Man2::sayHello2();//Fatal error: Uncaught exception 'Exception' with message '抛出异常'}*/for($i=0;$i<Man2::MAX_NUM;$i++){    Man2::sayHello2();}

2.类的继承与方法重写

People.php
<?phpclass People {    /**     * @param $age int 年龄     * @param $name string 姓名     * @param string $sex 性别     */    public function __construct($age,$name,$sex){//__construct()        $this->age = $age;        $this->name = $name;        $this->sex = $sex;    }    public function getAge(){//成员方法        return $this->age;    }    public function getName(){        return $this->name;    }    public function getSex(){        return $this->sex;    }    private  $age,$name,$sex;    public function hi(){        echo $this->name.'say hi';    }    public function hi2(){//和hi相同        echo $this->name.'say hi';    }}
Man.php
<?phprequire_once 'People.php';class Man extends People{//继承    public function __construct($age,$name){        parent::__construct($age,$name,'男');    }    public function hi2(){//重写  //      parent::hi2();//执行父类的方法        echo "重写的".$this->getName();//不能用this.name    }}
index.php
<?phprequire_once 'Man.php';$m = new Man(10,'w ');//$m->hi();//w say hi$m->hi2();//重写的w 

0 0