一.类与对象
面向对象:
①定义类 class Dog {②声明成员变量
var $name; var $age; var $pinzhong; ③声明成员函数 function Jiao() { echo "{$this->name}在叫"; } }④实例化对象
$dog = new Dog();⑤对象成员取值赋值
$dog ->name;
⑥调用对象的成员:
$dog->name = "旺财"; $dog->Jiao();二:$this关键字
$this 就是对象内部代表这个对象的引用
echo "这个人叫:".$this->name;
this代表该对象,如果要在成员方法中调用成员变量,一定要使用$this找出该成员变量
三:构造函数:PHP5之前与类名一样,PHP5改成了__construct( )
//定义方法 function __construct($n,$a,$p) { $this->name = $n; $this->age = $a; $this->pinzhong = $p; }
构造方法默认是共有的public
重载: php由于是弱类型的语言,所以没有重载
四:析构函数:
function __destruct(){echo "拜拜";}
五:封装:
①访问权限修饰符:private,public,protected
②将类里面的成员变量加一个private修饰符变成私有的,目的是为了保护类里面的成员不被外界随意访问,从而确保类的安全性。如果将变量设置为私有,如何去访问: 1.自己写函数get函数set函数,然后来对变量赋值和取值 2.用系统自带的__get()函数和__set()函数来实现类里面的变量赋值取值 function __set($name,$value) { $this->$name = $value; } function __get($name) { return $this->$name; }③只要是成员属性面前有其他的关键字就要去掉原有的关键字 var
private $name;
六:继承
①继承一般是单继承:一个儿子只能有一个父亲②子类可以继承父类的所有成员③子类可以对父类的成员方法进行重写:(函数名一样),如果要在子类方法中调用父类的方法,用parent:say()或Person::say();来实现调用父类的原方法parent::Jiao();function Jiao(){parent::Jiao();echo "hello";}
子类中用相同的函数名即可覆盖
function Say() { parent::Say(); echo "子类中的方法"; } }
④final关键字 可以定义该类为最终类,不可被继承
⑤静态:
关键字:static ,如果成员声明了为静态的,那么该成员是属于该类的,不是属于对象的 如何调用静态的成员: HaShiQi::$height = 10; HaShiQi::Gao(); 用类名加双冒号调用类的静态成员 类里面取静态变量,不能用$this,所以用self ⑥const关键字const时一个定义常量的关键字
在PHP中定义常量使用的是“define()”这个函数,但是在类里面定义常量使用的是“const”这个关键字
赋值取值和静态一样
七.多态
多态的概念:父类引用指向子类的实例,由于子类的不同,所表现出的差别
1.必须发生在继承下
2.子类对父类的
八. __toString的方法
tostring只在类中出现,系统自带的方法 双下划线在输出对象时,返回这个对象的信息function __toString(){$this->name;}$ren = new Ren("aa");echo $ren;//输出此对象,否则要输出要写 var_dump($ren);
①写在类里
②要有return
③输出对象引用
九.克隆对象
class Ren{ public $name; public $age = 10;} $ren = new Ren("aa"); //克隆对象 $r1 = clone $ren;//对象的复制 var_dump ($r1); var_dump ($ren);
十.自动加载类
将类引入页面,加载类
① include("0322class.php");② require_once("0322class.php");③ include "0322class.php";④ require_once "0322class.php";自动加载类 function __autoload($classname) { require_once "class_".$classname . '.php'; }文件名要求规范一致 eg: class_name.php