これは正当なものですか?PHPの定数のデフォルト値として使用する
<?php
function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
//lots_of_awesome_code
}
?>
MENU_DEFAULT_VALUE
とODP_DEFAULT_VALUE
ファイルで以前に定義された定数です。
これは正当なものですか?PHPの定数のデフォルト値として使用する
<?php
function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
//lots_of_awesome_code
}
?>
MENU_DEFAULT_VALUE
とODP_DEFAULT_VALUE
ファイルで以前に定義された定数です。
'' 'static'''を使って定数を参照することができないが、' '' self''を使って定数を参照することができない理由/文書は、クラスメソッドの引数のデフォルトを設定するときは? – Kamafeather
お試しください。
それでも、ちょうどあなたが今テストすることができる場合には、次のコード:
define('MENU_DEFAULT_VALUE', 10);
define('ODP_DEFAULT_VALUE', 'hello');
function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
var_dump($foo);
var_dump($nub);
var_dump($odp);
}
ftw();
は、この出力を与える:
string 'pwnage' (length=6)
int 10
string 'hello' (length=5)
だから私は、はい、それが有効である、と言うだろう: - )
クラスメソッドの文脈では、 '' 'static'''を介して定数を参照することはできませんが、単に' 'self''''を使うことでわかりました。この '' myMethod($ arg1 = static :: MY_CONST) ''は動作しません。あなたはこの違った振る舞いの有効な説明を知っていますか? – Kamafeather
OOPコンテキストでは、デフォルトのメソッド引数値としてクラスメンバ定数を使用することもできます。
class MyClass
{
const A = 1;
public function __construct($arg = self::A)
{
echo $arg;
}
}
ええ、私はこれを使用する機能に問題がありましたが、技術的には可能かもしれませんが、ベストプラクティスに対しては考えられませんでした。 –