2017-08-27 10 views
1

我在我的腳本中使用isset(),如果我使用一個常量而不是一個變量,那麼似乎會引發一個致命錯誤。爲什麼當我用isset()引發一個常量致命錯誤?

我的問題: 爲什麼當我用isset()引發一個常量致命錯誤?

<?php 

switch($current_page) { 
    case 'kb': 
     define('TITLE', 'Knowledge Base'); 
     break; 
    case 'edit': 
     define('TITLE', 'Edit'); 
     break; 
    case 'new': 
     define('TITLE', 'New'); 
     break; 
} 
... 
... 
... 
if (isset(TITLE)) { 
    echo "<h1>".TITLE."</h1>"; 
} 

我跑了一些測試,看看,無論是常量和變量具有相同的數據類型:

define('TITLE', 'Test'); 
$title = 'Test'; 

var_dump(TITLE); // string(4) "Test" 
var_dump($title); // string(4) "Test" 

我檢查http://php.net/manual/en/language.constants.php並沒有看到任何會考慮到這一點。

回答

4

PHP Documentation

警告
isset()函數只能用於變量爲別人遞東西將導致解析錯誤。爲了檢查是否設置了常量,使用defined()函數。

1

如果你想檢查是否constant定義,那麼你想要做的是使用defined()功能,而不是isset,顧名思義。

if (defined(DEFINE)) { 
    /** It is defined... **/ 
} 
相關問題