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/';

以前は、定数を使用しておらず、すべて正常に動作していました。彼らは1つのクラスを持っています。

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 に答える