• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP pthreads v3下的Volatile简介与使用方法示例

    本文实例讲述了PHP pthreads v3下的Volatile简介与使用方法。分享给大家供大家参考,具体如下:

    由于pthreads v3中引入了Threaded对象自动不变性的概念,所以当我们在构造函数中给成员设置为数组时,在其他地方就无法对成员再次改写了。

    例子如下:

    ?php
    
    //pthreads v3引入了Threaded对象自动不变性的概念
    //如果成员被设置成Threaded对象,那么它将不能被再次改写
    //当然,这主要还是为了性能优化,但有时我们又需要改写成员,那么就需要继承自Volatile类了
    class Task extends Thread
    {
      private $data;
      private $result;
    
      public function __construct()
      {
        $this->data = 'abc';
        var_dump($this->data);
    
        //成员设置成标量,是可以再次被改写的
        $this->data = 'def';
        var_dump($this->data);
    
        //这里给data设置为数组时,会自动转换成Volatile对象
        $this->data = [1, 2, 3];
        var_dump($this->data);
    
        //这个时候再给data赋值时,就会报错了
        //成员被设置成Threaded对象时(Volatile继承自Threaded),该成员就不能再次被改写了
        $this->data = [4, 5, 6];
        var_dump($this->data);
    
        //当然,我们可以显式的强制转换,不让Threaded帮我自动转成Volatile对象
        $this->result = (array)[1, 2, 3];
        //打印出来是数组
        var_dump($this->result);
        $this->result = (array)[4, 5, 6];
        //成员赋值成功
        var_dump($this->result);
      }
    }
    
    new Task();
    

    如果我们对成员再次进行改写,那么就会报错了。

    如果确实需要对成员数据进行改写,除了上面的显式强制转换外,另一个方法就是继承Volatile类了。

    例子如下:

    ?php
    
    //Volatile类允许其成员可更改
    class Task extends Volatile
    {
      private $data;
    
      public function __construct()
      {
        //继承自Volatile类后,我们的成员在设置成Threaded对象后,仍可改写
        $this->data = [
          'a' => 123,
          'b' => 456,
          'c' => 789,
        ];
        var_dump($this->data);
    
        //这里成员数据成功被改写
        $this->data = [
          'a' => 'aaa',
          'b' => 'bbb',
          'c' => 'ccc',
        ];
        var_dump($this->data);
    
        //由于Threaded对象实现了ArrayAccess接口,我们可以像访问数组一样,访问Volatile对象
        echo $this->data['a'], "\t", $this->data['b'], "\t", $this->data['c'], "\n";
    
        foreach ($this->data as $item) {
          echo $item, "\n";
        }
      }
    }
    
    new Task();
    

    结果如下:

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

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

    您可能感兴趣的文章:
    • PHP pthreads v3在centos7平台下的安装与配置操作方法
    • PHP pthreads v3下worker和pool的使用方法示例
    • PHP pthreads v3下同步处理synchronized用法示例
    • PHP pthreads v3使用中的一些坑和注意点分析
    • php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
    • php pthreads多线程的安装与使用
    • 使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
    • 基于PHP pthreads实现多线程代码实例
    上一篇:PHP pthreads v3使用中的一些坑和注意点分析
    下一篇:PHP pthreads v3下同步处理synchronized用法示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP pthreads v3下的Volatile简介与使用方法示例 PHP,pthreads,下的,Volatile,简介,