phpベストプラクティス----define()vs.const
5549 ワード
define()を使用すると、可読性、クラス定数、または微最適化に注目しない限り、
習慣的に、PHPではdefine関数を使用して定数を定義します.しかし、ある時からPHPでもconstが使えます. キーワードで定数を宣言します.定数を定義するときは、どのような方法を使いますか?
答えはこの二つの方法の違いにあります.
define()は実行期間で定数を定義し、constはコンパイル期間で定数を定義する.このようにコンサートは軽いスピード優勢がありますが、大規模なソフトウェアを構築している限り、この問題を考慮する価値はありません.define()はグローバルスコープに定数を入れます.名前空間は定数名に含まれますが.これは、クラスの定数を定義するためにdefine()を使用できないことを意味します.define()は定数名と定数値の中で表現を使うことができますが、constは許可されません.これはdefineをより柔軟にする.define()はif()コードブロックで呼び出すことができますが、constはできません.例
どちらを選んでも、同じようにしてください.
習慣的に、PHPではdefine関数を使用して定数を定義します.しかし、ある時からPHPでもconstが使えます. キーワードで定数を宣言します.定数を定義するときは、どのような方法を使いますか?
答えはこの二つの方法の違いにあります.
define()は実行期間で定数を定義し、constはコンパイル期間で定数を定義する.このようにコンサートは軽いスピード優勢がありますが、大規模なソフトウェアを構築している限り、この問題を考慮する価値はありません.define()はグローバルスコープに定数を入れます.名前空間は定数名に含まれますが.これは、クラスの定数を定義するためにdefine()を使用できないことを意味します.define()は定数名と定数値の中で表現を使うことができますが、constは許可されません.これはdefineをより柔軟にする.define()はif()コードブロックで呼び出すことができますが、constはできません.例
<?php
// Let's see how the two methods treat namespaces
namespace MiddleEarth\Creatures\Dwarves;
const GIMLI_ID = 1;
define('MiddleEarth\Creatures\Elves\LEGOLAS_ID', 2);
echo(\MiddleEarth\Creatures\Dwarves\GIMLI_ID); // 1
echo(\MiddleEarth\Creatures\Elves\LEGOLAS_ID); // 2; note that we used define()
// Now let's declare some bit-shifted constants representing ways to enter Mordor.
define('TRANSPORT_METHOD_SNEAKING', 1 << 0); // OK!
const TRANSPORT_METHOD_WALKING = 1 << 1; //Compile error! const can't use expressions as values
// Next, conditional constants.
define('HOBBITS_FRODO_ID', 1);
if($isGoingToMordor){
define('TRANSPORT_METHOD', TRANSPORT_METHOD_SNEAKING); // OK!
const PARTY_LEADER_ID = HOBBITS_FRODO_ID // Compile error: const can't be used in an if block
}
// Finally, class constants
class OneRing{
const MELTING_POINT_DEGREES = 1000000; // OK!
define('SHOW_ELVISH_DEGREES', 200); // Compile error: can't use define() within a class
}
?>
define()はより柔軟なので、いくつかの頭痛を避けるためにそれを使うべきです.constを使用すると、通常より読み取り可能なコードが生成されるが、柔軟性を犠牲にすることができる.どちらを選んでも、同じようにしてください.