面向对象的静态、抽象和加载

  静态:

    关键字为:static

    静态成员与普通成员的区别:普通成员是属于对象的,为静态成员是属于类的。

class FenBi{
    public static $color;   //静态成员
    public $length;  //普通成员
    public static function test(){
        echo "长度为:{$this->length}";
    }
    public function ceshi(){
        echo "颜色为".FenBi::$color;
    }
}
FenBi::$color = "红色";  //赋值使用类名
$f = new FenBi();
$f->ceshi();

    静态的方法里面不能包含普通成员(没有对象,没办法调用普通成员);

    普通的方法里面可以包含静态成员。

 

  抽象:

    抽象类:更加抽象的一个类,无法直接实例化对象,主要做为父类存在;

    抽象方法:抽象的一个方法,不能直接调用;

    抽象关键字:abstract。

abstract class Ren{
    public abstract function test();
}
class China extends Ren{
    public function test(){
        echo "aa";
    }
}
$c = new China();

    接口:极度抽象的类,里面只能包含抽象方法,不能包含普通方法和成员变量。

//定义实现哪些功能
interface USB{
    public function read();
    public function write();
}
//具体实现方法
class ShuBiao implements USB{
    public function read(){
        echo "鼠标插入了";
    }
    public function write(){
        echo "给鼠标供电了";
    }
}

$s = new ShuBiao();
$s->read();
$s->write();

    接口一般还表示API:网络数据接口。

 

  加载:

    如果在类里面只造了一个对象,然后直接输出会报错,入过想输出查看类里面的内容需要使用到加载。

    关键词:__tostring,同样为一个魔术方法,在输出对象时自动调用。

class Ren{
    public function __tostring(){
        return "这是一个人类";
    }
$r = new Ren();
echo $r;  //输出这是一个人类

  克隆:

    能够从一个对象里面克隆出一个一模一样的对象出来。

    关键词:__clone

class Ren{
    public $name;
    public function __clone(){
        //$this->name = "李四";   //输入这句可以改变输出的内容
    }
}
$r = new Ren();
//克隆对象
$r = new Ren();
$r->name = "张三";
$r1 = clone $r;
var_dump($r1);  //输出张三

  加载类:

    1.

include("类所在的地址");

      这种执行两次会因为重复报错,写成:

include_once("类所在的地址");

      这样就可以正常显示,表示请求一次,可防止因发生重复而报错。

    2.

require("类所在的地址");

      同样两次重复会报错

require_once("类所在的地址")

      这样就可以防止报错。

    这两种的区别:如果类里面出现错误,include不会影响程序执行,require会导致后面的不能执行。

    3.自动加载类:

      条件:

        1.类的命名要规范;

        2.所有的类要放在同一个文件夹下。

      类的文件命名规范:类名(同样首字母大写).class.php。

      关键词:__autoload

function __autoload($classname){
    require_once "地址";
}

        然后在同一个目录下新建几个类,即可调用。

posted @ 2018-01-09 12:10  23滴雨  阅读(193)  评论(0编辑  收藏  举报