私はPHPでOOPを学んでおり、変数からクラス定数に値を入れたいと思っています。どうやってやるの?
これは私のコードです(機能していません!):
class Dir {
const ROOT = $_SERVER['DOCUMENT_ROOT']."project/";
function __construct() {
}
}
OOPで、変数から値を取得し、文字列を追加して定数にする方法はありますか?
マニュアルページ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.
定数は変数を持つことができません。
に依存しないことをお勧めします$_SERVER['DOCUMENT_ROOT']
。代わりに、自分自身を定義することができますROOT
。
たとえばconfig.php
、ドキュメントルートにがあります。
define('ROOT', __DIR__.'/'); // php version >= 5.3
define('ROOT', dirname(__FILE__).'/'); // php version < 5.3
ROOT
代わりに使用してください。
に設定してみませんか__construct()
。技術的には、それが目的です。
class Dir {
public function __construct() {
self::ROOT = $_SERVER['DOCUMENT_ROOT']."project/";
}
}
OOPを使用する必要があり、すべてがクラス内にある必要があるため、このソリューションをお勧めします。したがって、constまたはstatic varを直接使用することはできないため、静的関数を使用します。
class Dir
{
public static function getRoot()
{
return $_SERVER['DOCUMENT_ROOT'] . 'project/';
}
}
そしてあなたはそれを次のように使うことができます
Dir::getRoot();