Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Yii中的常量和数组定义下拉列表_Php_Yii - Fatal编程技术网

Php 使用Yii中的常量和数组定义下拉列表

Php 使用Yii中的常量和数组定义下拉列表,php,yii,Php,Yii,我是Yii框架的新手。 我正在学习“用Yii和PHP开发Web应用程序”。 本书定义了常量,并在数组中使用它来提供下拉列表。 为什么? 为什么它有价值? 以及它如何将数组定义中的新值赋予常量? 以下是代码: class Issue extends CActiveRecord{ .... const TYPE_BUG=0; const TYPE_FEATURE=1; const TYPE_TASK=2; public function getTypeOptions() { return arra

我是Yii框架的新手。 我正在学习“用Yii和PHP开发Web应用程序”。 本书定义了常量,并在数组中使用它来提供下拉列表。 为什么? 为什么它有价值? 以及它如何将数组定义中的新值赋予常量?

以下是代码:

class Issue extends CActiveRecord{
....

const TYPE_BUG=0;
const TYPE_FEATURE=1;
const TYPE_TASK=2;
public function getTypeOptions()
{
return array(
self::TYPE_BUG=>'Bug',
self::TYPE_FEATURE=>'Feature',
self::TYPE_TASK=>'Task',
);

....
}

使用常量的替代方法是使用所谓的幻数,即“在代码中直接使用数字”。假设我们正在创建一个用户注册表单,并且希望限制用户名字段的最大字符数。我们可以这样做:

if (strlen($model->username) > 10){
    // username is too long
}
这段代码基本上没有问题。当您在多个位置使用相同的值时,例如当用户更新其详细信息并更改其用户名时,就会出现问题。你会再次进行同样的比较

现在想象一下,出于某种原因,我们决定用户名现在可以12个字符长。您必须找到代码中使用此值的所有位置并进行更新。在我们这里的示例中,这并不是一个真正的问题,想象一下在一个巨大的系统上执行此操作时,有数百个对该值的引用。您不能简单地查找值10并将其替换为12,因为这几乎肯定会破坏系统。所以你必须找到并解释这个值的每一次出现

使用常量代替该值将节省大量时间,并将生成更易于维护的更易于理解的代码。例如:

const MAX_USERNAME_LENGTH = 10;

if (strlen($model->username) > MAX_USERNAME_LENGTH){
    // username is too long
}
幻数的一个好定义是:

The term magic number also refers to the bad programming practice of using
numbers directly in source code without explanation. In most cases this makes
programs harder to read, understand, and maintain. Although most guides make an
exception for the numbers zero and one, it is a good idea to define all other
numbers in code as named constants.

顺便说一句,我是这本书的技术评论员之一(用Yii和PHP开发Web应用程序)

因为,嗯,如果值得的话,你也可以用它代替它。谢谢你完整而有用的回答。没问题,很高兴我能帮上忙,我知道使用常量的好处,但我不知道在下拉列表的数组中使用它之间的关系。我理解,根据您的回答,当我们在许多地方使用下拉列表时,它将是有价值的(便于将来更改)。我似乎合乎逻辑。再次感谢你。