0

我有错误“使用未定义的常量 PATH_TO_WORDS - 假定为 'PATH_TO_WORDS'”。

private function changeFileName($fileName, $path) {
    if ( $path == 'db') {
        $path = PATH_TO_FILES_FROM_DB;
    } elseif ( $path == 'file' ) {
        $path = PATH_TO_WORDS; // there error
    } else {
        throw new Exception("Invalid path for file: $path");
    }

    $fileName = preg_replace('!\\s!', '', $fileName);
    $fileName .= Yii::app()->user->id;

    $wholePath = $path . $fileName;

    return $wholePath;
}

和常数:

const PATH_TO_FILES_FROM_DB = 'userFiles/db/';
const PATH_TO_WORDS = 'userFiles/fromFiles/';

之前,我没有使用常量,一切正常。他们有一堂课。

4

3 回答 3

3

看起来这些是类常量而不是全局常量,它们必须通过类访问,例如:

// anywhere
TheClassname::CONSTANT_NAME

// inside the class or a descendent class only
self::CONSTANT_NAME

如果它们应该是全局常量,那么您需要使用该define()函数来定义它们,例如:

// definition
define('CONSTANT_NAME', 'thevalue');

// access from anywhere
CONSTANT_NAME;
于 2013-03-11T17:57:32.247 回答
1

您错误地使用了常量,引用应该是:

class foo {
    const PATH_TO_FILES_FROM_DB = 'userFiles/db/';

    function bar() {
          $path = self::PATH_TO_FILES_FROM_DB;
                  ^^^^^^----- need this
    }
}

当您使用它们时,它们不是类常量,它们是标准define()常量,例如

define('PATH_TO_FILES_FROM_DB', 'userFiles/db/');

class Foo {
   function bar:
       $path = PATH_TO_FILES_FROM_DB;
   }
}
于 2013-03-11T17:59:24.860 回答
0

只需定义全局常量

define( 'PATH_TO_FILES_FROM_DB', 'userFiles/db/' );
define( 'PATH_TO_WORDS', 'userFiles/fromFiles/' );

或在您的班级中,而不是您通过以下方式访问它们self::CONSTANTNAME

于 2013-03-11T17:58:50.013 回答