PHP7匿名类用法分析_php技巧

本文实例讲述了PHP7匿名类用法。分享给大家供大家参考,具体如下:

匿名类跟匿名函数一样,创建一次性的简单对象

<?php
/**
 * Created by PhpStorm.
 * User: bee
 * Date: 2016/4/24
 * Time: 00:17
 */
echo '匿名函数';
$anonymous_func = function(){return 'function';};
echo $anonymous_func();
echo '<br>';
echo '<hr>';
class common {
  public $default = 10;
  function __construct($key){
    $this->getVal($key);
  }
  public function getVal(int $i):int{
    $this->default += $i;
    return $this->default+0.1;
  }
}
echo '有名函数';echo '<br>';
$com = new common(1);
echo $com->getVal(2.2).'--';
echo $com->getVal(2.2).'--';
echo (new common(1))->getVal(8.9);
echo '<hr>';echo '匿名类';
//定义匿名类需继承
echo (new class(1) extends common{})->getVal(90);echo '<br>';
echo (new class(2) extends common{})->getVal(90);

运行效果图如下:

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

<?php
class 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

匿名函数可以实现闭包,那么相应的匿名类也可以实现闭包

<?php
/**
 * Created by PhpStorm.
 * User: bee
 * Date: 2016/4/24
 * Time: 1:51
 */
$arr = array();
for ($i=0; $i<3; $i++){
  $arr[] = new class($i){
    public $index=0;
    function __construct($i)
    {
      $this->index = $i;
      echo 'create</br>';
    }
    public function getVal(){
      echo $this->index;
    }
  };
}
$arr[2]->getVal();
echo '<br>';
var_dump($arr[1]);

运行效果图如下:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索匿名类
php7
c 匿名类用法、匿名内部类用法、of的用法小技巧、苹果6s用法小技巧大全、of的用法技巧,以便于您获取更多的相关知识。

时间: 2024-10-13 03:20:40

PHP7匿名类用法分析_php技巧的相关文章

PHP7常量数组用法分析_php技巧

本文实例讲述了PHP7常量数组用法.分享给大家供大家参考,具体如下: php7之前define只能是键值对,而php7里可以把数组加进define <?php /** * Created by PhpStorm. * User: bee * Date: 2016/4/23 * Time: 1:27 */ define('NAME',[ 'lig','bee','arr'=>array('ligbee'),array('lig','bee'),'w' ]); echo NAME[0]; echo

PHP7.1新功能之Nullable Type用法分析_php技巧

本文实例分析了PHP7.1新功能之Nullable Type用法.分享给大家供大家参考,具体如下: 在 PHP5 时代,PHP 的参数已经支持 type hint(除了基本类型),想必大家应该很熟悉:后来 PHP7 时代来临,PHP 也可以指定返回值的类型(以及基本类型的 type hint).但我们可能还有一种需求:除了指定的 type hint,参数或者返回值也能定义可以为 null,举个例子,假如我们有一个 UserRepository 类,有一个方法叫 find($id),此方法可返回一

php类中的各种拦截器用法分析_php技巧

本文实例讲述了php类中的各种拦截器用法.分享给大家供大家参考.具体用法分析如下: 1.__get( $property ) 访问未定义的属性时调用 复制代码 代码如下: class lanjie  {      function __get($name)      {          echo $name." property not found! ";      }  }  $ob = new lanjie();  echo $ob->g; 当我们调用对象$ob未定义的属性

php中Snoopy类用法实例_php技巧

本文实例讲述了php中Snoopy类用法.分享给大家供大家参考.具体分析如下: 这里演示了php中如何通过Snoopy抓取网页信息 snoopy类的下载地址:http://sourceforge.net/projects/snoopy/ /* You need the snoopy.class.php from http://snoopy.sourceforge.net/ */ include("snoopy.class.php"); $snoopy = new Snoopy; //

CI框架文件上传类及图像处理类用法分析_php实例

本文实例讲述了CI框架文件上传类及图像处理类用法.分享给大家供大家参考,具体如下: //列表页banner图片 public function edit_list_page_banner($category_id=""){ $category_id= empty($category_id)?$_POST["category_id"]:$category_id; //上传图片 if(isset($_POST["key"]) && $

php版微信js-sdk支付接口类用法示例_php技巧

本文实例讲述了php版微信js-sdk支付接口类用法.分享给大家供大家参考,具体如下: 这个支付类是根据官方的文档修改而来!主要实现生成JS API .Native的package签名包和Native响应的XML格式数据.注释都标上了各方法的用意.由于package包签名,略复杂,这个要自己多花时间去对应去看和log出文件来一一对比!当然只要你用上教程的类,设置好对应的参数就可以正确的生成package参数等 <?php if (isset($argc) && $argc >=

php中debug_backtrace、debug_print_backtrace和匿名函数用法实例_php技巧

本文实例讲述了php中debug_backtrace.debug_print_backtrace和匿名函数用法.分享给大家供大家参考.具体分析如下: debug_print_backtrace() 是一个很低调的函数,很少有人注意过它. 不过当我们对着一个对象调用另一个对象再调用其它的对象和文件中的一个函数出错时,它正在一边笑呢. debug_print_backtrace() 可以打印出一个页面的调用过程,从哪儿来到哪儿去一目了然.不过这是一个PHP5的专有函数,好在pear中已经有了实现.

php生成rss类用法实例_php技巧

本文实例讲述了php生成rss类用法,分享给大家供大家参考.具体如下: <?php require('rssbuilder.class.php'); header('Content-Type: application/xml; charset=UTF-8'); header('Cache-Control: no-cache, must-revalidate'); header('Expires: Fri, 14 Mar 1980 20:53:00 GMT'); header('Last-Modi

PHP遍历文件夹与文件类及处理类用法实例_php技巧

本文实例讲述了PHP遍历文件夹与文件类及处理类用法,非常具有实用价值.分享给大家供大家参考.具体方法如下: FindFile.class.php类文件用于遍历目录文件,具体代码如下: <?php /** 遍历文件夹及文件类 * Date: 2013-03-21 * Author: fdipzone * Ver: 1.0 */ class FindFile{ public $files = array(); // 存储遍历的文件 protected $maxdepth; // 搜寻深度,0表示没有