2013-02-01 142 views
14

在PHP 5.3或更小,它會提供類似如下的錯誤:PHP 5.2注意:未定義的常量__DIR__用途 - 假設「__DIR__

Notice: Use of undefined constant __DIR__ - assumed '__DIR__ 

這是因爲我使用魔法不變__DIR__。在5.3或更低版本中是否有替代使用__DIR__

下面是導致它的代碼:

<?php 
/** 
* Load template files 
* 
* $files Contains alphabetized list of files that will be required 
*/ 
$files = array(
    'elements.inc', 
    'form.inc', 
    'menu.inc', 
    'theme.inc', 
); 

function _zurb_foundation_load($files) { 
    $tp = drupal_get_path('theme', 'zurb_foundation'); 
    $file = ''; 

    // Workaround for magic constant; for now because of php 5.2 issue 
    // http://drupal.org/node/1899620#comment-6988766 
    if(!defined(__DIR__))define(__DIR__, dirname(__FILE__)); 

    // Check file path and '.inc' extension 
    foreach($files as $file) { 
    $file_path = __DIR__ .'/inc/' . $file; 
    if (strpos($file,'.inc') > 0 && file_exists($file_path)) { 
     require_once($file_path); 
    } 
    } 
} 

_zurb_foundation_load($files); 
+2

更好的主意:更新。 PHP5.2不再被維護。而且遲早要更新是個好主意;) – KingCrunch

+0

@KingCrunch真實的我在想,但它就像一個Internet Explorer 6的問題。人們不想放棄它 – chrisjlee

+1

IE6不受MS本身支持,你知道嗎? ;)PHP5.2必須被視爲不安全。另一方面,5.4現在已經有一段時間了,甚至5.5將會在四月到六月之間。在我看來,給「這個人」的理由是無用的5.2 – KingCrunch

回答

44

使用舊招:

dirname(__FILE__) 

但如果可能的話,請更新到PHP的新版本。

+1

即使在5.3之後也可以使用嗎? – chrisjlee

+1

@chrisjlee是的,它會產生相同的結果 – Tchoupi

+1

也許是「可以接受的」,但爲了可讀性,您應該更喜歡'__DIR__'。 – KingCrunch

相關問題