search
HomeBackend DevelopmentPHP TutorialSummary of some new features in use with php7

If you are using a framework based on composer and PSR-4, can this writing method successfully load class files? In fact, it is possible. The automatic loading method registered by composer is to find the location according to the namespace of the class when the class is called. , this way of writing has no effect on it.

1. Operator (NULL coalescing operator)

I put this first because I think it is very useful. Usage:

$a = $_GET['a'] ?? 1;

It is equivalent to:

<?php
$a = isset($_GET[&#39;a&#39;]) ? $_GET[&#39;a&#39;] : 1;

We know that the ternary operation operator can be used like this:

$a ?: 1

But this is based on On the premise that $a has already been defined. The new ?? operator can simplify judgment.

#2. Function return value type declaration

Examples provided by the official documentation (note... The side length parameter syntax is in PHP 5.6 Only available in the above versions):

<?php
function arraysSum(array ...$arrays): array
{
  return array_map(function(array $array): int {
    return array_sum($array);
  }, $arrays);
}
print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));

From this example, you can see that now functions (including anonymous functions) can specify the type of return value.

The writing of this declaration is somewhat similar to swift:

func sayHello(personName: String) -> String {
  let greeting = "Hello, " + personName + "!"
  return greeting
}

This feature can help us avoid some problems caused by PHP's implicit type conversion. Thinking about the expected results before defining a function can avoid unnecessary errors.

But there is also a feature that needs attention here. PHP 7 adds a declare directive: strict_types, which uses strict mode.

When using return value type declaration, if it is not declared in strict mode, and if the return value is not the expected type, PHP will still perform cast type conversion on it. But if it is strict mode, a Fatal error of TypeError will be triggered.

Force mode:

<?php
function foo($a) : int
{
  return $a;
}
foo(1.0);

The above code can be executed normally, and the foo function returns int 1 without any errors.

Strict mode:

<?php
declare(strict_types=1);

function foo($a) : int
{
  return $a;
}
foo(1.0);

# PHP Fatal error: Uncaught TypeError: Return value of foo() must be of the type integer, float returned in test.php:6

After the declaration, a fatal error will be triggered.

Is it similar to the strict mode of js?

3. Scalar type declaration

The formal parameter type declaration of functions in PHP 7 can now be scalar. In PHP 5, it can only be a class name, interface, array or callable (PHP 5.4, it can be a function, including anonymous functions). Now you can also use string, int, float and bool.

Official example:

<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
  return array_sum($ints);
}
var_dump(sumOfInts(2, &#39;3&#39;, 4.1));

It should be noted that the strict mode problem mentioned above also applies here: in forced mode (default, both forced type conversion), there will still be errors that do not conform to the The expected parameters are cast to type, and a fatal TypeError error is triggered in strict mode.

4. Use batch declaration

In PHP 7, use can declare multiple classes or functions or const in one sentence:

<?php
use some/namespace/{ClassA, ClassB, ClassC as C};
use function some/namespace/{fn_a, fn_b, fn_c};
use const some/namespace/{ConstA, ConstB, ConstC};

But You still have to write out the name of each class or function or const (there is no method from some import * like python).

The question you need to pay attention to is: if you are using a framework based on composer and PSR-4, can this writing method successfully load class files? In fact, it is possible. The autoloading method registered by composer searches the location according to the namespace of the class when the class is called. This way of writing has no effect on it.

5. Other features

I won’t introduce some other features one by one. If you are interested, you can check the official documentation

Brief introduction One:

PHP 5.3 started to have anonymous functions, and now there are anonymous classes;

define can now define constant arrays;
Closure has been added A call method;
The generator (or iterator is more appropriately called) can have a final return value (return), or can enter another generator (generator delegate) through the new syntax of yield from.

The two new features of generators (return and yield from) can be combined. You can test the specific appearance by yourself. PHP 7 is now at RC5 and the final version should be coming soon.

The above is the detailed content of Summary of some new features in use with php7. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
php7检测tcp端口不好用怎么解决php7检测tcp端口不好用怎么解决Mar 22, 2023 am 09:30 AM

在php5中,我们可以使用fsockopen()函数来检测TCP端口。这个函数可以用来打开一个网络连接和进行一些网络通信。但是在php7中,fsockopen()函数可能会遇到一些问题,例如无法打开端口、无法连接到服务器等。为了解决这个问题,我们可以使用socket_create()函数和socket_connect()函数来检测TCP端口。

php7.0怎么安装mongo扩展php7.0怎么安装mongo扩展Nov 21, 2022 am 10:25 AM

php7.0安装mongo扩展的方法:1、创建mongodb用户组和用户;2、下载mongodb源码包,并将源码包放到“/usr/local/src/”目录下;3、进入“src/”目录;4、解压源码包;5、创建mongodb文件目录;6、将文件复制到“mongodb/”目录;7、创建mongodb配置文件并修改配置即可。

php7.0安装了插件还是显示未安装怎么办php7.0安装了插件还是显示未安装怎么办Apr 02, 2024 pm 07:39 PM

解决 PHP 7.0 中插件未显示已安装问题的方法:检查插件配置并启用插件。重新启动 PHP 以应用配置更改。检查插件文件权限,确保其正确。安装丢失的依赖项,以确保插件正常运行。如果其他步骤均失败,则重建 PHP。其他可能原因包括插件版本不兼容、加载错误版本或 PHP 配置问题。

php8和php7哪个好php8和php7哪个好Nov 16, 2023 pm 03:09 PM

PHP8相较于PHP7在性能、新特性和语法改进、类型系统、错误处理和扩展等方面都有一些优势和改进。然而,选择使用哪个版本要根据具体的需求和项目情况来决定。详细介绍:1、性能提升,PHP8引入了Just-in-Time(JIT)编译器,可以提高代码的执行速度;2、新特性和语法改进,PHP8支持命名参数和可选参数的声明,使得函数调用更加灵活;引入了匿名类、属性的类型声明等等。

php7.0怎么安装部署php7.0怎么安装部署Nov 30, 2022 am 09:56 AM

php7.0安装部署的方法:1、到PHP官网下载与本机系统对应的安装版本;2、将下载的zip文件解压到指定目录;3、打开命令行窗口,在“E:\php7”目录下运行“php -v”命令即可。

PHP 服务器环境常见问题指南:快速解决常见难题PHP 服务器环境常见问题指南:快速解决常见难题Apr 09, 2024 pm 01:33 PM

PHP服务器环境常见的解决方法包括:确保已安装正确的PHP版本和已复制相关文件到模块目录。临时或永久禁用SELinux。检查并配置PHP.ini,确保已添加必要的扩展和进行正确设置。启动或重启PHP-FPM服务。检查DNS设置是否存在解析问题。

记录一次用strace诊断php占用系统资源过高的问题记录一次用strace诊断php占用系统资源过高的问题May 03, 2024 pm 04:31 PM

本地环境:redhat6.7系统。nginx1.12.1,php7.1.0,代码使用yii2框架问题:本地的web站需要用到elasticsearch服务。当php使用本地服务器搭建的elasticsearch时,本地的负载都是正常。当我使用aws的elasticsearchservice服务时,本地服务器出现负载经常过高的情况。查看nginx和php日志,发现没有异常。系统的并发连接数也不高。这时候想到我们老大给我讲的一个strace诊断工具。调试过程:查找一个php的子进程idstrace-

php7怎么下载与安装(教程分享)php7怎么下载与安装(教程分享)Mar 23, 2023 pm 02:11 PM

随着互联网技术的发展,计算机编程语言也随之不断发展和更新。PHP作为一种广泛应用于Web开发领域的编程语言,在多年的发展中经历了多个版本的更新,而最新版的PHP7又在性能和稳定性上有了巨大提升。为了能更好地应用PHP编程语言,这篇文章将介绍PHP7的下载和安装教程,供初学者参考。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft