>백엔드 개발 >PHP 튜토리얼 >PHP에서 정의와 const의 차이점은 무엇입니까? (상해)

PHP에서 정의와 const의 차이점은 무엇입니까? (상해)

不言
不言앞으로
2019-01-07 11:13:383982검색

이 기사의 내용은 PHP에서 정의와 const의 차이점에 관한 것입니다. (자세한 설명) 참고할만한 가치가 있으니 도움이 필요한 친구들이 참고하시면 좋겠습니다.

PHP에서 상수를 정의하는 방법에는 정의와 const라는 두 가지 방법이 있습니다. 둘의 차이점은 무엇인가요?

const CONSTANCE = 'const';
define('CONSTANCE',  'const');

const 키워드는 PHP 5.3부터 클래스 정의 외부에서 상수를 정의할 수 있습니다.

const는 클래스 내부에서 정의할 수 있지만 정의는 정의할 수 없습니다.
const로 정의된 상수는 현재 네임스페이스에 있으며, 실행할 네임스페이스를 정의하려면 특정 네임스페이스를 작성해야 합니다.

class Foo {
    const BAR = 2;
}


class Foo2 {
    define("BAR", 3); //无效的
}

//命名空间的示例
namespace A{
    const A1 = 1; //处在命名空间A中
    define('A2',  2); //全局可调用
    define('A\A3', 3); //处在命名空间A中
}

namespace B{
    use const \A\A1;
    use const \A\A3;
    
    echo A1;
    echo A2; //全局调用
    echo A3;
}

const는 컴파일 단계에서 상수를 정의하고, 정의는 전처리 단계에서 상수를 정의합니다.

const는 컴파일 단계에서 상수를 정의하며, 상수를 정의할 때 최상위 범위에 있어야 합니다.
따라서 if와 같은 조건문에서는 정의할 수 없습니다.

define은 매크로 정의라고도 하는 상수를 정의합니다. 매크로는 미리 정의된 일련의 규칙에 따라 특정 텍스트 패턴을 대체하는 것으로 설명될 수 있습니다.
define은 브랜치에 존재할 수 있습니다.

이론적으로 const를 사용하는 것이 정의하는 것보다 조금 더 빠릅니다.

const는 스칼라 데이터(예: 정수, 문자열, 부울 및 부동 소수점 등)만 허용합니다. 정의는 모든 표현식을 허용할 수 있습니다.

define('BIT_5',   1<<5); 
const BIT_5 =     1<<5; //5.6之后才有效
PHP 5.6부터 const는 배열도 허용합니다. 및 표현식 const也可以接受数组和表达式
define可以接受resource类型,constdefine 수식은 resource 유형을 허용하지만 const는 허용하지 않습니다.

const 상수 이름은 단순 문자만 사용할 수 있습니다. 어떤 표현식이든 가능합니다. 공식

const STR = 'string';
$i = 1;
define("STR_" . $i,  STR);

const는 대소문자를 구분하며 정의는 세 번째 매개변수를 통해 대소문자 구분을 제어할 수 있습니다.

몇 가지 질문이 더 있습니다

const 및 정의로 정의된 상수 배열이 그 안의 요소를 변경할 수 있나요?

정의를 사용하여 const로 정의된 상수를 확인할 수 있나요?

위 내용은 PHP에서 정의와 const의 차이점은 무엇입니까? (상해)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제