php接口

类的自动加载

__autoload()函数
当时用一个不存在的类时,__autoload($className)会自动调用
当时用new关键字,创建一个不存在的类对象时,__autoload()自动调用;

function __autoload($className)
{
    $filepath = "$className.class.php";
    if (file_exists($filepath)) {
        require_once($filepath);
    }
}

自定义类文件加载函数(spl_autoload_register)

注册多个类加载函数,形成一个类文件的队列, 按照注册时的顺序,依次执行

使用匿名函数做参数

spl_autoload_register(function ($className) {
   //类文件路径的数组
    $arr = ["./libs/$className.class.php","./public/$className.class.php"];
    // 循环数组
    foreach ($arr as $filepath) {
        if (file_exists($filepath)) require_once($filepath);
    }
});

对象克隆

clone,当对象克隆完成时,在类里会自动调用__clone()

遍历对象属性

foreach($this as $k=$v)

在类外遍历只能得到public的属性,在类内能遍历到所有属性

魔术方法

  1. __toString()
    将对象转为字符串时,类里的__toString()会自动调用
  2. __invoke()
    当把对象当成函数调用时,会自动调用
  3. __LINE__当前行号
  4. __FILE__当前文件
  5. __DIR__当前目录
  6. __CLASS__当前类名
  7. __FUNCTION__当前函数名
  8. __METHOD__当前方法名

面向对象设计模式

  1. 单例模式
    (三私一公)
    一私:私有的静态的保存对象的属性
    一私:私有的构造方法,阻止类外new对象
    一私:私有的克隆方法,阻止类外clone对象
    一公:共有的静态的创建对象的方法
class Db{
    private static $obj = null;
    private function __construct(){}
    private function __clone(){}
    public static function getInstance(){
        if (!self::$obj instanceof self) {
            self::$obj = new self;
        }
        return self::$obj;
    }
}

$obj instanceof ClassName 判断一个对象是否是某个类产生的对象

  1. 工厂模式

php的重载

动态地『创建』类属性和方法,是通过魔术方法来实现的
当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用

属性重载

__set()、__get()、__isset()、__unset()

方法重载

__call()、__callStatic()

静态延时绑定

static::静态属性,静态方法,成员方法,类常量是哪个类的对象,代表哪个类

类型约束

主要指方法参数或函数参数,function (array $a)

序列化

  • serialize()
  • unserialize()
    对象序列化之前会调用魔术方法__sleep(),反序列化会调用__wakeup()

常用方法

class_exists()判断类是否存在
interface
method
property

获取类名

get_class()
get_parent_class()

你可能感兴趣的:(php接口)