首页 >头条 > 正文

如何编写不同的PHP?

转载2020-07-23 13:05:310894

PHP是开发界讨论最多的编程语言之一。有人将其称为无效的编程语言,有人将其称为令人讨厌的编程语言,没有约定或体系结构,我同意其中的一些观点,因为他们有公平的观点。但是,在这里,我将分享我这些年来用PHP进行编程的经验。其中一些技巧仅在最新的PHP版本中可用,因此它们在旧版本中可能无法使用。

类型提示和返回类型

就数据类型而言,PHP并不是一种完美的语言,但是您可以使用类型提示和返回类型来提高代码质量并防止进一步的类型冲突。使用PHP的这些功能的人并不多,并不是所有的PHP程序员都知道这是可能的。

<?php
function greet_user(User $user, int $age): void {
    echo "Hello" . $user->first_name . " " . $user->last_name;
    echo "\nYou are " . $age . " years old";
}

可以在参数变量之前使用类型的名称或类声明类型提示,并在冒号后的函数签名之后声明返回类型。

在像Laravel这样的框架中设计控制器时,可以更高级地使用它:

<?php
class UserController extends Controller
{
    // User sign up controller
    public function signUp(Request $request): JsonResponse
    {
        // Validate data
        $request->validate([
            'plateNumber' => 'required|alpha_num|min:3|max:20|unique:users,plate_number',
            'email' => 'required|email|unique:users',
            'firstName' => 'required|alpha',
            'lastName' => 'required|alpha',
            'password' => 'required|min:8',
            'phone' => 'required|numeric|unique:users'
        ]);
        // Create user
        $new_user = new User;
        $new_user->plate_number = trim(strtoupper($request->input('plateNumber')));
        $new_user->email = trim($request->input('email'));
        $new_user->first_name = trim($request->input('firstName'));
        $new_user->last_name = trim($request->input('lastName'));
        $new_user->password = Hash::make($request->input('password'));
        $new_user->phone = trim($request->input('phone'));
        $new_user->save();
        return response()->json([
            'success' => true,
        ]);
    }
}

三元运算符

三元运算符是几乎70%的程序员都知道并广泛使用的东西,但是如果您不知道三元运算符是什么,请参见以下示例:

<?php
$age = 17;
if($age >= 18) {
    $type = 'adult';
} else {
    $type = 'not adult';
}

可以使用三元运算符将此代码简化为以下代码:

<?php
$age = 17;
$type = $age >= 18 ? 'adult' : 'not adult';

如果满足条件,则不将第二部分分配给该变量。

如果要使用条件的值(如果它被评估为真实值),则还有一种更短的方法。

<?php
$url = 'http://example.com/api';
$base_url = $url ? $url : 'http://localhost';

如您所见$url,既用作条件又用作条件为真的结果。在这种情况下,可以转义左侧操作数:

<?php
$url = 'http://example.com/api';
$base_url = $url ?: 'http://localhost';

空合并运算符

就像三元运算符一样,您可以使用空合并运算符来查看值是否存在,请注意,因为false本身就是值,所以现存值与错误值不同。

<?php
$base_url = $url ?? 'http://localhost';

现在$base_url等于,http://localhost但是如果我们将其定义$url为false,则$base_url变量将等于false。

<?php
$url = false;
$base_url = $url ?? 'http://localhost';

使用此运算符,您可以检查以前是否定义了变量,以及是否未为其分配值:

<?php
$base_url = 'http://example.com';
$base_url = $base_url ?? 'http://localhost';

您可以使用空合并分配运算符来缩短此代码

<?php
$base_url = 'http://example.com';
$base_url ??= 'http://localhost';

所有这些nall合并技术都可以在数组值上实现。

<?php
$my_array = [
    'first_name' => 'Adnan',
    'last_name' => 'Babakan'
];
$my_array['first_name'] ??= 'John';
$my_array['age'] ??= 20;

上面的数组将具有first_nameas,Adnan因为它已经被定义,但是将定义一个名为的新键,age并为其指定编号20,因为它不存在。

飞船运算符

当您想知道哪个操作数更大而不是仅知道一侧是否更大时,太空飞船算符是一个非常有用的运算符。

飞船操作者将返回的一个1,0或-1值时,左边的操作数较大时,当两个操作数是相等的,并且当右操作数分别是较大的。

<?php
echo 5 <=> 3; // result: 1
echo -7 <=> -7; // result: 0
echo 9 <=> 15; // result: -1

很简单,但非常有用。

当您意识到太空飞船操作员也可以比较其他事物时,这将变得更加有趣:

<?php
// String
echo 'c' <=> 'b'; // result: -1
// String case
echo 'A' <=> 'a'; // result: 1
// Array
echo [5, 6] <=> [2, 7]; // result: 1

箭头函数

如果您曾经编写过JavaScript应用程序,尤其是使用其最新版本进行编程,则应该熟悉箭头功能。箭头函数是一种定义没有范围的函数的较短方法。

<?php
$pi = 3.14;
$sphere_volume = function($r) {
    return 4 / 3 * $pi * ($r ** 3);
};
echo $sphere_volume(5);

上面的代码将引发错误,因为$pi未在此特定函数的范围内定义变量。如果我们想使用它,我们应该稍微改变一下我们的功能:

<?php
$pi = 3.14;
$sphere_volume = function($r) use ($pi) {
    return 4 / 3 * $pi * ($r ** 3);
};
echo $sphere_volume(5);

因此,现在我们的函数可以使用$pi在全局范围内定义的变量。

但是做这些事情的更短的方法是使用箭头功能。

<?php
$pi = 3.14;
$sphere_volume = fn($r) => 4 / 3 * $pi * ($r ** 3);
echo $sphere_volume(5);

如您所见,它非常简单整洁,默认情况下可以访问全局范围。

推荐教程:《PHP

php中文网最新课程二维码
  • 相关标签:php
  • 本文转载于:dev,如有侵犯,请联系a@php.cn删除
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • PHP是开发界讨论最多程语言之一。有人将其称为无效程语言,有人将其称为令人讨厌程语言,没有约定或体系结构,我意其中一些观点,因为他们有公平观点。
    php判断两个数组方法:首先使用函数“array_diff()”来获取两个数组差集,该函数作用是计算两个或多个数组之间差集;然后判断返回两个数组差集,为空则两个数组
    这篇文章主要介绍了关于phpsession存储机制,有着一定参考价值,现在分享给大家,有需要朋友可以参考一下
    本篇文章讲解简洁而又规范PHP代码,以及好PHP代码和坏PHP代码对比。
    php代码时,需要注意命名规范,果命名规范,则会导致输出错误或者程序错误,时也便于别人观看代码。
    许多学都在问CSS兼容ie浏览器,下面我就来介绍一下css兼容ie法,大家一起来看看,有错误和足,欢迎指出。
    php中,果没有构造函数,在实例化一个对象时候,有时会满足我们需求,这时就需要手动构造函数来满足我们使用需求。手构造函数有两种法,只是表现形式,其实本质一样。
    今天偶然在想,果用PHP一个类似BDB基于文件Key-Value小型数据库用于存储非结构化记录型数据,知道效率会
    本篇文章讲述了Twig什么,以及在thinkphp6使用,最后需要注意Twig规范。
    redis主从步就是刚刚连接时候,进行全量步;全步结束后,进行增量步。当然,果有需要,slave在任时候都可以发起全量步。
    把html文件php原因:1、果将html代码php代码中,仅会使php代码混乱,而且没有辑器语法支持;2、php最核心特性是可以将php代码嵌入html代码中,仅代码优雅,而且有辑器语法支持
    php中,等于用“==”表示,例:“$a == $b”,表示$a等于$b;全等于用“===”表示,表示数据相并且它们类型也相等于用“!=”表示,例:“$a !
    PHP中实现权限进入页面方法:首先在用户登录成功时候,将用户权限等级加入Session会话中;然后在访问页面时再将Session中存权限等级取出来;最后再根据权限等级进行相应页面跳转即可
    1.PHP 实现用自带 cookie 函数为客户端下发 cookie。对于分布式系统,来保存 session 值。
    软件开发文档方法和步骤:1、说明标题;2、设计模块开发情况表;3、阐述功能说明;4、设计说明;5、给出原代码清单;6、完成测试说明;7、得出复审结论。
    用户登陆功能是PHP程序设计中常见需求,本文ThinkPHP实例主要完成注册成功后进入首页代码,并告诉你是实现登录用户功能。
    本文讲述了php实现简易在线投票系统,有兴趣学一起来看看吧。
    PHPCMS和PHP区别:PHPCMS是一个完整开源网站内容管理系统,而PHP是一种计算机程语言,而PHPCMS是用PHP语言进行,所以两者是完全东西,也无法比较区别。
    JpGraph是一个完全用PHP面向对象图形创建库,可以在任PHP脚本中使用(支持CGI/APXS/CLI版本PHP),支持PHP5和PHP7。
    php中static、self、$this区别有:1、【$this】表示对象引用,在类中非静态方法中;2、self和this,它指向类本身,指向任实例化对象;3、static一般用来访问类中静态变量和静态方法

    专题推荐

    推荐视频教程
  • PHP开发免费公益直播课PHP开发免费公益直播课
  • PHP代码整洁之道PHP代码整洁之道
  • 视频教程分类