这个例子中的冒号是做什么的? PHP
what does the colon do in this example? PHP
我在 Laravel 文档中看到了这个创建访问器的例子,但我不明白 'get' 单词后面那个冒号的意思:
Link到页面:https://laravel.com/docs/9.x/eloquent-mutators#defining-an-accessor
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get the user's first name.
*
* @return \Illuminate\Database\Eloquent\Casts\Attribute
*/
protected function firstName(): Attribute
{
return Attribute::make(
get: fn ($value) => ucfirst($value),
);
}
}
命名参数(或命名参数)在 PHP8 中引入。当方法有很多参数时,它们会有所帮助and/or我们不记得参数的顺序。
假设我们有以下 setcookie
函数
setcookie (
string $name,
string $value = "",
int $expires = 0,
string $path = "",
string $domain = "",
bool $secure = false,
bool $httponly = false,
) : bool
我们需要使用这个函数来设置一个名称和时间来过期。如果我们不记得参数的顺序,就会成为一个问题,并可能产生不希望的结果。即使我们记住或查找参数的顺序,如果没有命名参数,我们也会将其用作:
//Without named arguments
setcookie('Test', '', 100);
使用命名参数我们可以这样做
setcookie(name:'Test', expires:100);
基本上使用命名参数的语法是
functionName(argumentName: value, anotherArgumentName: value);
希望这可以帮助您理解为什么在 get
之后使用 :
进一步阅读:
按照你的例子,我试着勾勒出工作流程。
<?php
class A {
public static function make(Closure $fn, string $name = "Dirk" , string $sex = "d"): string {
$gender = $fn(
[
"m" => "male",
"f" => "female"
][$sex]
);
return "Hello " . $fn($name) . ". You are a " . $gender .".";
}
}
echo A::make(
sex: "m",
name: "mark",
fn: fn ($value) => ucfirst($value)
);
// output: Hello Mark. You are a Male
我在 Laravel 文档中看到了这个创建访问器的例子,但我不明白 'get' 单词后面那个冒号的意思:
Link到页面:https://laravel.com/docs/9.x/eloquent-mutators#defining-an-accessor
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get the user's first name.
*
* @return \Illuminate\Database\Eloquent\Casts\Attribute
*/
protected function firstName(): Attribute
{
return Attribute::make(
get: fn ($value) => ucfirst($value),
);
}
}
命名参数(或命名参数)在 PHP8 中引入。当方法有很多参数时,它们会有所帮助and/or我们不记得参数的顺序。
假设我们有以下 setcookie
函数
setcookie (
string $name,
string $value = "",
int $expires = 0,
string $path = "",
string $domain = "",
bool $secure = false,
bool $httponly = false,
) : bool
我们需要使用这个函数来设置一个名称和时间来过期。如果我们不记得参数的顺序,就会成为一个问题,并可能产生不希望的结果。即使我们记住或查找参数的顺序,如果没有命名参数,我们也会将其用作:
//Without named arguments
setcookie('Test', '', 100);
使用命名参数我们可以这样做
setcookie(name:'Test', expires:100);
基本上使用命名参数的语法是
functionName(argumentName: value, anotherArgumentName: value);
希望这可以帮助您理解为什么在 get
:
进一步阅读:
按照你的例子,我试着勾勒出工作流程。
<?php
class A {
public static function make(Closure $fn, string $name = "Dirk" , string $sex = "d"): string {
$gender = $fn(
[
"m" => "male",
"f" => "female"
][$sex]
);
return "Hello " . $fn($name) . ". You are a " . $gender .".";
}
}
echo A::make(
sex: "m",
name: "mark",
fn: fn ($value) => ucfirst($value)
);
// output: Hello Mark. You are a Male