静态:
关键字为: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 "地址"; }
然后在同一个目录下新建几个类,即可调用。