loganlinn/constantsarray

一个简单的PHP类,用于在字符串中使用常量

dev-master 2012-10-01 19:41 UTC

This package is not auto-updated.

Last update: 2024-09-22 02:23:09 UTC


README

一个简单的PHP类,用于在字符串中使用常量

在PHP中,如果您想在字符串中使用常量,您有一些选择。

您可以使用连接运算符

define('COLOR_RED',    0);
define('COLOR_GREEN',  1);
define('COLOR_BLUE',   2);

echo "SELECT * FROM shirts WHERE color IN (".COLOR_RED.",".COLOR_GREEN.",".COLOR_BLUE.")";

或者使用古老的 sprintf()

define('COLOR_RED',    0);
define('COLOR_GREEN',  1);
define('COLOR_BLUE',   2);

echo sprintf(
	'SELECT * FROM shirts WHERE color IN (%d, %d, %d)',
	COLOR_RED,
	COLOR_GREEN,
	COLOR_BLUE
)
SQL;

或者将常量分配给变量

define('COLOR_RED',    0);
define('COLOR_GREEN',  1);
define('COLOR_BLUE',   2);

$COLOR_RED   = COLOR_RED;
$COLOR_GREEN = COLOR_GREEN;
$COLOR_BLUE  = COLOR_BLUE;

echo <<<SQL
	SELECT * FROM shirts WHERE color IN (
		$COLOR_RED,
		$COLOR_GREEN,
		$COLOR_BLUE
	)
SQL;

注意:这些示例很简单,但考虑更复杂的情况(查询)。

这些都是我看到的方法,不要误会,它们能完成任务,但有些可能很难或难以阅读,有些则仅仅在输入或编辑时令人烦恼。还有什么其他选择吗?

介绍 ConstantsArray。这是一个简单的数组类,允许在字符串内部轻松访问您的常量,而无需退出双引号字符串或为heredoc分配大量变量。

define('COLOR_RED',    0);
define('COLOR_GREEN',  1);
define('COLOR_BLUE',   2);
$const = new ConstantsArray();

echo <<<SQL
	SELECT * FROM shirts WHERE color IN (
		{$const['COLOR_RED']},
		{$const['COLOR_GREEN']},
		{$const['COLOR_BLUE']}
	)
SQL;

简短、简洁、易读。

ConstantsArray 实现了 ArrayAccess 接口,以便类似数组的方式访问 constant() 函数,因此它简单且相对轻量。我鼓励您阅读此类的源代码

我应该承认,另一种选择是使用PHP的 get_defined_constants() 函数来获取环境中的所有常量作为数组,您可以像使用 ConstantsArray 一样使用它。然而,这可能会造成大量内存浪费。

基本上就是这样。享受吧!

许可证

ConstantsArray 使用MIT许可证。有关更多详细信息,请参阅LICENSE