簡體   English   中英

使用Yii中的常量和數組定義下拉列表

[英]define a drop-down list using constants and array in Yii

我是Yii框架的新手。 我正在學習'使用Yii和PHP進行Web應用程序開發'。 本書定義了CONSTANTS並在數組中使用它來提供下拉列表。 為什么? 它為什么有價值? AND它如何將數組定義中的新值歸因於CONSTANTS?

這是代碼:

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個字符長。 您必須找到代碼中使用此值的所有位置並更新它們。 雖然在我們這里的例子中,這不是一個真正的問題,但想象一下在一個巨大的系統上這樣做,有數百個對這個值的引用。 你不能簡單地找到並用12替換值10 ,因為這幾乎肯定會破壞系統。 因此,您必須找到並解釋此值的每次出現。

在這個值的位置使用常量可以節省我們很多時間,並且可以使更易理解的代碼更易於維護。 例如:

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應用程序開發)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM