gpt4 book ai didi

PHP 常量 : Advantages/Disadvantages

转载 作者:可可西里 更新时间:2023-11-01 12:51:14 25 4
gpt4 key购买 nike

最近,我习惯于将整数值分配给常量,并简单地使用常量名称作为识别其用途的一种方式。但是,在某些情况下,这导致需要在需要字符串表示时编写类似 typeToString($const) 的函数。显然,这是低效且不必要的,但这只是偶尔出现的问题。

所以我的问题是,是否还有其他我应该考虑的权衡?哪种情况被认为更清洁/更符合标准?此外,在大多数情况下,性能差异是否可以忽略不计?

情况 1:(当不需要字符串版本时更快?)

class Foo {
const USER_TYPE_ADMIN = 0;
const USER_TYPE_USER = 1;
const USER_TYPE_GUEST = 2;

public $userType = self::USER_TYPE_ADMIN;

public function __construct($type) {
$this->userType = $type;
}

public function typeToString() {
switch($this->userType) {
case self::USER_TYPE_ADMIN:
return 'admin';
break;

case self::USER_TYPE_USER:
return 'user';
break;

case self::USER_TYPE_GUEST:
return 'guest';
break;

default:
return 'unknown';
break;
}
}
}

$foo = new Foo(Foo::USER_TYPE_GUEST);
echo $foo->typeToString();
// Displays "guest"

情况 2:(当需要字符串版本时更快/更容易)

class Foo {
const USER_TYPE_ADMIN = 'admin';
const USER_TYPE_USER = 'user';
const USER_TYPE_GUEST = 'guest';

public $userType = self::USER_TYPE_ADMIN;

public function __construct($type) {
$this->userType = $type;
}
}

$foo = new Foo(Foo::USER_TYPE_GUEST);
echo $foo->userType();
// Displays "guest"

最佳答案

除非您存储大量数据,否则性能差异可以忽略不计。我会更简洁地编写 toString() 方法:

$strings = array
(
self::USER_TYPE_ADMIN => 'admin',
self::USER_TYPE_USER => 'user',
);

if (!isset($strings[$type]))
return 'unknown';

return $strings[$type];

此外,您可以将 $strings 数组设为 static

关于PHP 常量 : Advantages/Disadvantages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/247936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com