PHP에서 상수를 정의하는 방법은 무엇인가요?
PHP에서 상수는 정의()와 const의 두 가지 방법으로 정의할 수 있습니다.
그런데 개발 중에 언제 상수를 정의하기 위해 정의()를 사용해야 하고, 상수를 정의하기 위해 언제 const를 사용해야 할까요? 상수를 정의하는 이 두 가지 방법의 주요 차이점은 무엇입니까?
버전 5.3부터 PHP에는 const 키워드 또는 정의() 메서드를 사용하여 상수를 정의하는 두 가지 방법이 있습니다.
const FOO = 'BAR'; define('FOO', 'BAR');
둘 사이의 가장 큰 차이점은 const는 컴파일 타임에 상수를 정의하는 반면, 정의() 메서드는 런타임에 상수를 정의하는 것입니다.
const는 if 문에서 사용할 수 없으며 defne()은 if 문에서 사용할 수 있습니다.
if(...) { const FOO = 'BAR';//错误 } if(...) { define('FOO', 'BAR');//正确 }
define()의 일반적인 시나리오는 상수를 정의하기 전에 먼저 상수가 정의되었는지 여부를 확인하는 것입니다.
if(defined('FOO)) { define('FOO', 'BAR') }
const 상수를 정의할 때 값은 정적 스칼라(숫자, 문자열, true)만 될 수 있습니다. , false, null), Define() 메소드는 모든 표현식의 값을 상수 값으로 사용할 수 있습니다. PHP 5.6부터 const를 사용하면 표현식을 상수 값으로 사용할 수도 있습니다.
const BIT_5 = 1 << 5; //PHP5.6后支持,之前的PHP版本不支持 define('BIT_5', 1 << 5);// 所有PHP版本都支持
const는 단순한 상수 이름만 허용하는 반면, Define()은 모든 표현식의 값을 상수 이름으로 사용할 수 있습니다.
for ($i = 0; $i < 32; $i++) { define('BIT_' . $i, 1 << $i); }
const const로 정의된 상수 이름은 대소문자를 구분하며 true를 정의() 메서드에 전달합니다. 세 번째 매개변수는 대소문자를 구분하지 않는 상수를 정의할 수 있습니다.
define('FOO', 'BAR', true); echo FOO; //BAR echo foo; //BAR
위에 나열된 내용은 정의()에 비해 const의 몇 가지 단점이나 유연성이 없습니다. 상수를 정의하기 위해 개인적으로 정의() 대신 const를 사용하는 것을 권장하는 이유를 살펴보겠습니다(위 목록에서 const를 사용하려는 경우 제외). 장면에 정의된 상수).
const는 가독성이 더 좋고, const는 함수가 아닌 언어 구조이며, 클래스에서 클래스 상수를 정의하는 형식과 일치합니다.
const는 현재 네임스페이스에서 상수를 정의하며, 정의할 때 정의 시 전체 네임스페이스 이름을 전달해야 유사한 효과를 얻을 수 있습니다.
namespace A\B\C; //To define the constant A\B\C\FOO: const FOO = 'BAR'; define('A\B\C\FOO', 'BAR');
const PHP5.6부터 배열을 상수 값으로 사용할 수 있으며, 정의() PHP 7.0부터 배열을 상수 값으로 사용하는 것만 지원합니다.
const FOO = [1, 2, 3];// valid in PHP 5.6 define('FOO', [1, 2, 3]);// invalid in PHP 5.6, valid in PHP 7.0
const는 언어 구조이고 상수는 컴파일 타임에 정의되기 때문에 const는 정의()보다 약간 더 빠릅니다.
define()으로 많은 수의 상수를 정의하면 PHP가 효율성에 영향을 미친다는 것은 잘 알려져 있습니다. 사람들은 정의()로 인한 효율성 문제를 우회하기 위해 apc_load_constants()와 hidef를 발명했습니다.
마지막으로 const는 클래스와 인터페이스에서 상수를 정의하는 데에도 사용할 수 있으며, Define()은 전역 네임스페이스에서 상수를 정의하는 데에만 사용할 수 있습니다.
class FOO { const BAR = 2;// 正确 } class Baz { define('QUX', 2)// 错误 }
요약:
if 분기에 정의되지 않는 한 또는 표현식의 값으로 명명된 상수. 다른 경우에는(단순히 코드 가독성을 위해서라도) Define() 대신 const를 사용하는 것이 좋습니다.
추천: "PHP 튜토리얼"
위 내용은 PHP 상수를 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!