2

私はPHPでOOPを学んでおり、変数からクラス定数に値を入れたいと思っています。どうやってやるの?

これは私のコードです(機能していません!):

class Dir {

const ROOT = $_SERVER['DOCUMENT_ROOT']."project/";

function __construct() {

}
}

OOPで、変数から値を取得し、文字列を追加して定数にする方法はありますか?

4

4 に答える 4

6

マニュアルページhttp://www.php.net/manual/en/language.oop5.constants.phpから、次のことがわかります。

The value must be a constant expression, not (for example) a variable, a property, a result of a mathematical operation, or a function call. 
于 2012-07-09T14:23:32.330 に答える
2

定数は変数を持つことができません。

に依存しないことをお勧めします$_SERVER['DOCUMENT_ROOT']。代わりに、自分自身を定義することができますROOT

たとえばconfig.php、ドキュメントルートにがあります。

define('ROOT', __DIR__.'/'); // php version >= 5.3
define('ROOT', dirname(__FILE__).'/'); // php version < 5.3

ROOT代わりに使用してください。

于 2012-07-09T14:24:47.173 に答える
0

に設定してみませんか__construct()。技術的には、それが目的です。

class Dir {

    public function __construct() {
        self::ROOT = $_SERVER['DOCUMENT_ROOT']."project/";
    }
}
于 2012-07-09T14:45:35.180 に答える
0

OOPを使用する必要があり、すべてがクラス内にある必要があるため、このソリューションをお勧めします。したがって、constまたはstatic varを直接使用することはできないため、静的関数を使用します。

class Dir
{
    public static function getRoot()
    {
        return $_SERVER['DOCUMENT_ROOT'] . 'project/';
    }
}

そしてあなたはそれを次のように使うことができます

Dir::getRoot();
于 2016-09-07T22:05:42.873 に答える