加入收藏 | 设为首页 | 会员中心 | 我要投稿 草根网_ASP源码网 (https://www.1asp.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

PHP运算符 PHP早已不是十年前的鸟样

发布时间:2022-10-19 12:54:30 所属栏目:教程 来源:
导读:  开发者Brent发布了一篇文章,详细介绍了 2019 年的 PHP 是怎么样的。

  php 小数运算_PHP运算符_php常量可以运算

  Brent 承认 PHP 当前仍然存在一些问题,比如许多核心函数仍然有不一致的方法签名、
  开发者Brent发布了一篇文章,详细介绍了 2019 年的 PHP 是怎么样的。
 
  php 小数运算_PHP运算符_php常量可以运算
 
  Brent 承认 PHP 当前仍然存在一些问题,比如许多核心函数仍然有不一致的方法签名、配置设置还是令人困惑,但是以他自己的开发经验来看,他认为 PHP 是 Web 开发的绝佳选择,使用 PHP,他可以创建可靠、可维护和高质量的应用,并且自己与客户对最终结果都满意。
 
  文章中 Brent 关注于 PHP 这些年来发展得好的一面,他通过几下几点,说明“PHP 不再是十年前那一门糟糕的语言了”:
 
  PHP 正在积极开发,每年都会发布新版本
 
  当前 PHP 版本是去年 12 月份发布的7.3,7.4 预计在今年年底发布,而 PHP 8.0 将是 7.4 之后的下一个版本。
 
  php常量可以运算_php 小数运算_PHP运算符
 
  自从 5.X 时代以来,核心团队希望每年发布一个新版本,在过去四年中他们成功维护了这么一个发布周期。通常每个新版本都会得到官方两年时间的积极支持,之后有一年仅提供安全修复,其目的是激励 PHP 开发人员尽可能保持更新。
 
  PHP运算符_php常量可以运算_php 小数运算
 
  更加具体的发布与维护周期可以查看 PHP 官网的介绍:
 
  看到上边这个表,你可能会发现版本号从 5 跳到了 7,那 PHP 6 去哪里了?
 
  顺便科普一下。其实早在 2005 年,PHP 社区就发起了 PHP 6,但由于实现 Unicode 面临的困难太大,项目最终流产,PHP 官方没有发布 PHP 6 GA,并且在2010 年将 PHP 6 取消。虽然 PHP 6 项目取消了,但其大量已实现功能集成到了PHP 5.X中,包括 OOP 方面的改进,使得 PHP 从面向过程跨越到面向对象。
 
  PHP 6 被取消了,但是之前对这个主要版本的研发都是以 PHP 6 的名义进行的,所以许多参考资料与书籍都是用“PHP 6”来指代该版本。官方担心这在放弃 PHP 6 之后会引起混乱,于是干脆不使用 PHP 6.X 版本号,直接从 5 跳到 7。
 
  详情可以查看官方说明:
 
  PHP 5 之后性能在不断提高
 
  PHP 7.0 中,PHP 核心部分完全重写,带来了最新的 Zend 引擎,使得 PHP 性能提升了两到三倍。
 
  作者引用了的基准测试来说明这一点,指出自 7.0 以来,PHP 性能一直在提升,PHP Web 应用与其它语言的 Web 框架相比在一些情况下性能好很多。但他也表示:“当然 PHP 框架不会胜过 C 与 Rust,但比 Rails 或 Django 好得多,与 ExpressJS 相当。”
 
  有非常活跃的框架、包和平台组成的语言生态
 
  提到 PHP 的框架,不得不说 WordPress,但是作者表示 WordPress 绝对不代表当前的 PHP 生态:“PHP 框架再也不仅仅只有 WordPress 了”。
 
  当前 PHP 中有两个主要的 Web 应用开发框架:Symfony 与 Laravel,还有 Zend、Yii、Cake 与 Code Igniter 这些,此外还有不少较小的框架。
 
  Symfony 与 Laravel都拥有庞大的包和软件生态,包括 admin 面板和 CRM、独立软件包、CI、分析器、Web socket 服务器、队列管理器与支付集成等。
 
  此外,近几年 PHP 异步框架也兴起了,Swoole、Amp 与 ReactPHP 是其中的佼佼者,它们是用 PHP 或其它语言编写的框架和服务器,用来运行真正的异步 PHP。
 
  作者认为衡量 PHP 生态当前状况的一种方法是查看Packagist这个 PHP 主要软件包存储库的数据。通过以下趋势图,可以发现软件包数量呈指数增长,并且当前录入软件包有223?217 个,总的安装量达到了14?827?204?847,PHP生态已不再像以前那么弱小。
 
  php常量可以运算_php 小数运算_PHP运算符
 
  各种版本的可用软件包的数量
 
  PHP运算符_php常量可以运算_php 小数运算
 
  每月包被安装数
 
  php 小数运算_PHP运算符_php常量可以运算
 
  此外,还可以看看 PHP 使用统计与市场定位最新数据:
 
  PHP 在不断发展,过去几年中添加了许多新特性
 
  尽管 async 与 await 这两个呼声极高的特性还没有实现,但是 PHP 这几年新特性不断出现,语言本身得到了各方面的改进。
 
  下边列出了一些关注度比较高的 PHP 新特性:
 
  短闭包,也称为箭头函数,这是一种在 PHP 中编写较短函数的方法。将闭包传递给 array_map 或 array_filter 等函数时,它可以发挥极大的作用。
 
  // A collection of Post objects $posts = [/* … */];
 
  $ids = array_map(fn($post) => $post->id, $posts);
  空合并运算符,它类似于三元运算符,但左边的操作数行为类似于 isset,而不是仅使用其布尔值。这使得此运算符对数组特别有用。它同时可在未设置变量时分配默认值。
 
  $undefined ?? 'fallback'; // 'fallback'
 
  $unassigned;
  $unassigned ?? 'fallback'; // 'fallback'
 
  $assigned = 'foo';
  $assigned ?? 'fallback'; // 'foo'
 
  '' ?? 'fallback'; // ''
  'foo' ?? 'fallback'; // 'foo'
  '0' ?? 'fallback'; // '0'
  0 ?? 'fallback'; // 0
  false ?? 'fallback'; // false
  Trait是一种重用代码的机制,它可以减少单继承的某些限制。Traits 与类组合的语义定义了降低复杂性的方式,并避免了与多重继承和 Mixins 相关的典型问题。
 
  Trait 类似于类,但仅用于以细粒度和一致的方式对函数进行分组,它是对传统继承的补充,可以实现行为的横向组合,类成员应用不需要继承。
 
 
  trait ezcReflectionReturnInfo {
      function getReturnType() { /*1*/ }
      function getReturnDescription() { /*2*/ }
  }
 
  class ezcReflectionMethod extends ReflectionMethod {
      use ezcReflectionReturnInfo;
      /* ... */
  }
 
  class ezcReflectionFunction extends ReflectionFunction {
      use ezcReflectionReturnInfo;
      /* ... */
  }
  ?>
  属性类型化,类变量可以定义类型PHP运算符,比如:
 
  class A
  {
      public string $name;
      
      public Foo $foo;
  }
  扩展运算符,这是一种新语法,可以直接在调用中解压缩参数,比如:
 
  call_user_func_array([$db, 'query'], array_merge(array($query), $params));
  直接用新语法可扩展出数组 $params:
 
  $db->query($query, ...$params);
  JIT 是一种编译器策略,它将代码表述为一种中间状态,在运行时将其转换为依赖于体系结构的机器码,并即时执行。在 PHP 中,这意味着 JIT 将为 Zend VM 生成的指令视为中间表述,并以依赖于体系结构的机器码执行,也就是说托管代码的不再是 Zend VM,而是更为底层的 CPU。
 
  Foreign Function Interface,外部函数接口,它允许从纯脚本语言调用 C 函数、使用 C 数据类型,从而更有效地开发“系统代码”。对于 PHP,FFI 开辟了一种使用纯 PHP 编写 PHP 扩展和绑定到 C 库的方法。
 
  匿名类,用于创建简单的一次性对象:
 
 
 
  // Pre PHP 7 code
  class Logger
  {
      public function log($msg)
      {
          echo $msg;
      }
  }
 
  $util->setLogger(new Logger());
 
  // PHP 7+ code
  $util->setLogger(new class {
      public function log($msg)
      {
          echo $msg;
      }
  });
 

(编辑:草根网_ASP源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章