> 백엔드 개발 > PHP 문제 > PHP 상수를 정의하는 방법은 무엇입니까?

PHP 상수를 정의하는 방법은 무엇입니까?

藏色散人
풀어 주다: 2023-02-28 13:14:01
원래의
4568명이 탐색했습니다.

PHP 상수를 정의하는 방법은 무엇입니까?

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(&#39;BIT_5&#39;, 1 << 5);// 所有PHP版本都支持
로그인 후 복사

const는 단순한 상수 이름만 허용하는 반면, Define()은 모든 표현식의 값을 상수 이름으로 사용할 수 있습니다.

for ($i = 0; $i < 32; $i++) {
    define(&#39;BIT_&#39; . $i, 1 << $i);
}
로그인 후 복사

const const로 정의된 상수 이름은 대소문자를 구분하며 true를 정의() 메서드에 전달합니다. 세 번째 매개변수는 대소문자를 구분하지 않는 상수를 정의할 수 있습니다.

define(&#39;FOO&#39;, &#39;BAR&#39;, 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 = &#39;BAR&#39;;
define(&#39;A\B\C\FOO&#39;, &#39;BAR&#39;);
로그인 후 복사

const PHP5.6부터 배열을 상수 값으로 사용할 수 있으며, 정의() PHP 7.0부터 배열을 상수 값으로 사용하는 것만 지원합니다.

const FOO = [1, 2, 3];// valid in PHP 5.6
define(&#39;FOO&#39;, [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(&#39;QUX&#39;, 2)// 错误
}
로그인 후 복사

요약:

if 분기에 정의되지 않는 한 또는 표현식의 값으로 명명된 상수. 다른 경우에는(단순히 코드 가독성을 위해서라도) Define() 대신 const를 사용하는 것이 좋습니다.

추천: "PHP 튜토리얼"

위 내용은 PHP 상수를 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿