• 技术文章 >后端开发 >php教程

    【php类与对象】匿名类

    不言不言2018-04-13 11:19:02原创760

    本篇文章给大家分享的内容是关于【php类与对象】匿名类 ,有着一定的参考价值,有需要的朋友可以参考一下

    匿名类

    PHP 7 开始支持匿名类。

    作用:创建一次性的简单对象

    可以传递参数到匿名类的构造器,也可以扩展(extend)其他类、实现接口(implement interface),以及像其他普通的类一样使用 trait:

    <?phpclass SomeClass {}interface SomeInterface {}trait SomeTrait {}
    
    var_dump(new class(10) extends SomeClass implements SomeInterface {
        private $num;    public function __construct($num)
        {
            $this->num = $num;
        }    use SomeTrait;
    });/*
    outputs:
    
    object(class@anonymous)#1 (1) {
      ["Command line code0x104c5b612":"class@anonymous":private]=>
      int(10)
    }
    */

    匿名类被嵌套进普通 Class 后,不能访问这个外部类(Outer class)的 private(私有)、protected(受保护)方法或者属性。
    为了访问外部类(Outer class)protected 属性或方法,匿名类可以 extend(扩展)此外部类。
    为了使用外部类(Outer class)的 private 属性,必须通过构造器传进来:

    <?phpclass Outer{
        private $prop = 1;    protected $prop2 = 2;    protected function func1()
        {
            return 3;
        }    public function func2()
        {
            return new class($this->prop) extends Outer {
                private $prop3;            public function __construct($prop)
                {
                    $this->prop3 = $prop;
                }            public function func3()
                {
                    return $this->prop2 + $this->prop3 + $this->func1();
                }
            };
        }
    }echo (new Outer)->func2()->func3(); //6

    声明的同一个匿名类,所创建的对象都是这个类的实例。

    匿名类的名称是通过引擎赋予的,如下例所示。 由于实现的细节,不应该去依赖这个类名。

    <?phpecho get_class(new class {});//class@anonymousD:\phpStudy2018\PHPTutorial\WWW\index.php00500020

    相关推荐:

    【php类与对象】重载

    以上就是【php类与对象】匿名类 的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 匿名 对象
    上一篇:php 守护进程(Daemon) 下一篇:php json_encode与json_decode详解及实例
    大前端线上培训班

    相关文章推荐

    • 推荐一本PHP程序猿都应该拜读的书_PHP• CodeIgniter自定义控制器MY_Controller用法分析_php实例• php实现给一张图片加上水印效果_php实例• Thinkphp关闭缓存的方法_php实例• ThinkPHP CURD方法之table方法详解_php实例

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网