资讯专栏INFORMATION COLUMN

php 语言特性学习(四)

crossoverJie / 2797人阅读

摘要:使用映射执行授权模式结果是函数,类,变量遇到未定义的变量或者常量时会继续运行,但是它一旦遇到未定义的函数或者类时就会终止执行在类中有一个特例。如果用户定义了函数,他在调用未定义的类时,会通过返回该类的定义,新加载的类将会被使用,不会出错

1.使用映射执行授权模式

 class ClassOne {
      function callClassOne() {
        print "in class one
";
    }
}

class ClassTwo {
    function callClassTwo() {
        print "in class two";
    }
}

class ClassOneDelgater {
    private $target;
    function __construct() {
        $this->target[] = new ClassOne();
    }

    function addObject($obj) {
        $this->target[] = $obj;
    }

    function __call($name,$args) {
        foreach ($this->target as $obj) {
            $r = new ReflectionClass($obj);
            try {
                if($method = $r->getMethod($name)) {
                    if($method->isPublic()) {
                        return $method->invoke($obj,$args);
                    }
                }
            }catch(Exception $e) {
                //print $e->getMessage();
            }
        }
    }
}

$obj = new ClassOneDelgater();
$obj->addObject(new ClassTwo());
//var_dump($obj->target);
$obj->callClassOne();
$obj->callClassTwo();

结果是

in class one 
in class two 

2.函数,类,变量

php遇到未定义的变量或者常量时会继续运行,但是它一旦遇到未定义的函数或者类时就会终止执行

在类中有一个特例。如果用户定义了__autoload函数,他在php调用未定义的类时,会通过__autoload返回该类的定义,新加载的类将会被使用,不会出错

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23144.html

相关文章

  • 快速学习nodejs系列:、nodejs特性1--单线程

    摘要:特性单线程说明也许你会问,为什么还不安装还不写代码还不讲模块前面我说过,不会一来就。另外,单线程中,操作系统没有创建销毁线程的时间开销。单线程缺点如果有用户造成线程崩溃,那个整个系统都崩溃了。 nodejs特性1--单线程 说明:也许你会问,为什么还不安装nodejs?还不写代码?还不讲模块?前面我说过,不会一来就hello world。而是会先跟大家讲讲nodejs的特点,只有大家明...

    cgspine 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    caspar 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    nihao 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    Drummor 评论0 收藏0
  • 联调环境快速部署——基于docker-compose的CI/CD实践

    摘要:三部署架构说明这个方案仅适用于小公司敏捷项目团队联调测试环境的部署,同时也可以作为学习入门的,并不适用于有一定规模的生产环境。另外,建议把测试域名泛解析到部署这台服务的机器。模块配置部署脚本业务模块的配置基本是通过部署脚本来操作的。 项目地址: https://github.com/xiongwilee...基本特性: 快捷部署多人nginx+php的开发测试环境,也可以扩展构建其...

    xiaokai 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<