PHP反射与接口

反射

1、概念

反射指在PHP运行状态中,扩展分析PHP程序,导出或提取出相关类、方法、属性、参数等的详细信息,包括注释

2、使用

3、反射的作用

用于文档生成、动态代理(proxy.php)

<?php
class mysql {
    public function connect($db) {
        echo "链接到数据库".$db[0];
    }
}
class sqlproxy {
    private $target;
    function __construct($tar) {
        $this->target[] = new $tar();
    }
    function __call($name, $args) {
        foreach ($this->target as $obj) {
            $r = new ReflectionClass($obj);
            //echo $r->getMethod($name),"<br/>";
            if ($method = $r->getMethod($name)) {
                //echo $method->isPublic(),"<br/>";
                //var_dump ($method->isAbstract(),"<br/>");
                if ($method->isPublic() && !$method->isAbstract()) {
                    echo "方法前拦截记录LOG","<br/>";
                    $method->invoke($obj, $args);
                    echo "方法后拦截","<br/>";
                }
            }
        }
    }
}
$obj = new sqlproxy('mysql');
$obj -> connect('member');

面向接口编程

1、 概念:

  • 狭义:interface
  • 广义:任何一个对外服务的接口

2、接口的作用

  • 对于实现接口的所有类,必须实现接口的全部方法
  • 接口为抽象而生
  • 接口===强制规范和契约
  • java中认为接口就是一种类型(type)

3、总结

  • 接口作为一种规范和契约存在。作为规范,接口应该保证可用性;作为契约,接口应该保证可控性
  • 接口只是一个声明,一旦使用interface关键字,就应该实现它。由程序员实现的接口叫外部接口,由系统实现的接口叫内部接口
  • PHP接口的两个不足:1、没有契约限制; 2、缺少足够多的内部接口
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容