php 注释函数参数样例,php8新特性详解及示例代码

本文介绍了PHP7.4中构造函数的简化,允许使用键值对方式传递参数,使得初始化更加灵活。同时,通过示例展示了ORM的改进,如nullsafe操作符的引入,使得代码更加简洁。此外,还提到了JIT的引入对性能的提升,使得PHP在效率上有了显著进步。
摘要由CSDN通过智能技术生成

更精简的构造函数和类型指定<?php

class Person

{

public function __construct(

public int $age = 0,

public string $name = ''

) {}

public function introduceSelf(): void

{

echo sprintf("Hi, This is %s, I'm %d years old.", $this->name, $this->age) . PHP_EOL;

}

}

$person = new Person(name: "church", age: 26);

$person->introduceSelf();

构造函数可以简写成这样了,用更少的代码初始化属性。

传参的时候,可以指定key,不用管顺序,随心所欲。

注解<?php

#[Attribute]

class Route

{

public function __construct(

public string $path = '/',

public array $methods = []

) {}

}

#[Attribute]

class RouteGroup

{

public function __construct(

public string $basePath = "/"

) {}

}

#[RouteGroup("/index")]

class IndexController

{

#[Route("/index", methods: ["get"])]

public function index(): void

{

echo "hello!world" . PHP_EOL;

}

#[Route("/test", methods: ["get"])]

public function test(): void

{

echo "test" . PHP_EOL;

}

}

class Kernel

{

protected array $routeGroup = [];

public function handle($argv): void

{

$this->parseRoute();

[,$controller, $method] = explode('/', $argv[1]);

[$controller, $method] = $this->routeGroup['/' . $controller]['get']['/'. $method];

call_user_func_array([new $controller, $method], []);

}

public function parseRoute(): void

{

$controller = new ReflectionClass(IndexController::class);

$controllerAttributes = $controller->getAttributes(RouteGroup::class);

foreach ($controllerAttributes as $controllerAttribute) {

[$groupName] = $controllerAttribute->getArguments();

$methods = $controller->getMethods(ReflectionMethod::IS_PUBLIC);

foreach ($methods as $method) {

$methodAttributes = $method->getAttributes(Route::class);

foreach ($methodAttributes as $methodAttribute) {

[0 => $path, 'methods' => $routeMethods] = $methodAttribute->getArguments();

foreach ($routeMethods as $routeMethod) {

$this->routeGroup[$groupName][$routeMethod][$path] = [IndexController::class, $method->getName()];

}

}

}

}

}

}

$kernel = new Kernel;

$kernel->handle($argv);

//cli模式下运行 php test.php /index/index

执行php test.php /index/test

e8575cc9e3dac8023d0db5e123512c84.png

官方文档给出的<<>>语法是错的,让我很郁闷,还是去源码中找的测试用例。

1e20afec5ad21b5198e47b0db0690cbe.png

nullsafe语法糖

新增nullsafe,很方便的东西,代码又可以少写两行了。

ORM可以更愉快地玩耍了。<?php

class User

{

public function posts()

{

return $this->hasMany(Post::class);

}

}

class Post

{

public function comments()

{

return $this->hasMany(Comment::class);

}

}

User::find(1)?->posts()->where("id", 1)->first()?->comments();

JIT

目前为止性能最强的PHP版本诞生了,又可以省两台服务器的钱了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值