静态、抽象类、加载类、魔术方法等
静态 static关键字
普通成员
普通成员是属于对象的
静态成员
静态成员是属于类的
普通方法里面可以调用静态成员
静态方法里面不能调用普通成员
self关键字 在类里面代表该类
普通类 class Ren { public $name="张三"; public static $zhongzu; //静态成员 普通方法 function Say() { echo self::$zhongzu."你好"; }
静态类 static function Run() { echo $this->name; } Ren::$zhongzu = "民族"; Ren::Run(); $r = new Ren(); $r->Say();
class myclass { static $count;//声明一个静态变量,用来统计对象创建的次数 function __construct()//声明一个静态方法,在类外面直接使用类名就可以调用 { self::$count++;//在方法中使用self访问静态成员并返回 } static function getcount()//声明一个静态方法,在类外面直接使用类名就可以调用 { return self::$count; //在方法中使用self 访问静态成员并返回 } }
myclass::$count=0;//在类外面使用类名访问类中的静态成员,为其初始化赋值 $myc1=new myclass();//创建第一个 $myc2=new myclass();//创建第二个 $myc3=new myclass();//创建第三个 echo myclass::getcount()."<br>";//输出3 echo $myc3->getcount();//输出3
抽象类 abstract 关键字
不能被实例化
做为父类使用
abstract class YunSuan//定义一个抽象类 { public $a; public $b; function Suan() { } } class Jia extends YunSuan//定义一个jia类继承与上边的抽象类 { function Suan() { return $this->a+$this->b; } } class Jian extends YunSuan//定义一个jian类继承与上边的抽象类 { function Suan() { return $this->a-$this->b; } } class Cheng extends YunSuan//定义一个jian类继承与上边的抽象类 { function Suan() { return $this->a*$this->b; } } $jia = new jia(); $jia->a=10; $jia->b=5;
echo $jia->Suan();
$jian = new jian(); $jian->a=10; $jian->b=5; echo $jia->Suan(); $cheng = new cheng (); $cheng->a=10; $cheng->b=5;
echo $cheng->Suan();
接口 关键词 interface implements
极度抽象的类
接口里面的方法主要是用来控制子类必须实现该类里面所有方法
interface IUSB { function Read(); //接口里面只声明函数名 function Write(); } class ShuBiao implements IUSB { function Read() { echo "鼠标插上了"; } function Write() { echo "给鼠标传了数据"; } } $s = new ShuBiao(); $s->Read();
加载类
include("./Ren.class.php");//"./" include "./Ren.class.php"; require("./Ren.class.php"); require "./Ren.class.php"; require_once("./Ren.class.php"); require_once "./Ren.class.php";
自动加载类
1.所有的类文件要放在同一个文件夹下
2.所有类文件的命名规则要一致
3.所有类文件的名字要和类名保持一致
function __autoload($classname) { require "./libs/".$classname.".class.php"; } $r = new Ren(); var_dump($r); $d = new cat();
克隆对象 关键字clone
class Ren { public $name; function Run() { echo "跑"; } function __tostring() { return "name变量代表的是人员名称,Run方法是一个跑的方法"; } //克隆对象的时候自动调用的方法 function __clone() { $this->name = "李四";//克隆之后给name赋新值 } } $r = new Ren(); $r->name = "张三"; $r1 = clone $r;//克隆的语法 var_dump($r1); var_dump($r);*/
魔术方法
构造函数,对类里面成员进行初始化
function __construct() { }
析构函数,在对象释放的时候自动执行
function __destruct() { }
__set方法
function __set($name,$value) { }
__get方法
function __get($name) { }
__tostring()方法
function __tostring() { }
__clone方法
function __clone() { }
__autoload方法
function __autoload($classname) { }
__tostring()能够直接输出对象
class Ren { public $name; function Run() { echo "跑"; } function __tostring()//不加这个方法,是不能直接输出所造对象的,在类中添加此方法,可以直接输出对象 { return "name变量代表的是人员名称,Run方法是一个跑的方法"; } } $r = new Ren(); echo $r;
关键字
1.class 定义类
2.访问修饰符 public protected private
3.new 造对象的关键字
4.$this 代表该对象本身
5.extends 代表继承
6.parent 代表父类
7.static 代表静态
8.self 代表该类
9.abstract 代表抽象,定义抽象类
10.interface 代表接口,用来定义接口
11.implements 实现接口
12.clone 代表克隆
13.override 重写
14.overload 重载
15.oop 代表面向对象
16.final 写在定义类前面的,将该类定义为最终类,则该类不能被继承