반응형
PHP에서 개인 상수가 가능합니까?
이 질문에 이미 답변이 있습니다.
PHP는 허용하지 않습니다
class Foo
{
private const my_private_const;
하지만 물론 허용
const my_const;
전역 효과 상수에 그래서 나는 액세스 할 수 있기 때문에 my_const
사용 어디서나Foo::my_const
개인 상수를 만드는 방법이 있습니까?
대답은 단순한 "아니오"입니다. PHP는이 개념을 지원하지 않습니다. 당신이 할 수있는 최선 private static
은 클래스 의 변수인데, 이것은 읽기 전용이 아니기 때문에 당연히 좋지 않습니다. 하지만 그저 해결해야합니다.
편집하다
귀하의 질문은 저를 생각하게 만들었습니다. 여기 제가 시도한 적이 없지만 작동 할 수있는 것이 있습니다. 다른 말로 "이것은 테스트되지 않았습니다". 그러나 다음과 같은 "개인 상수"를 원한다고 가정하십시오 FOO
.
// "Constant" definitions
private function __get($constName){
// Null for non-defined "constants"
$val = null;
switch($constName){
case 'FOO':
$val = 'MY CONSTANT UNCHANGEABLE VALUE';
break;
case 'BAR':
$val = 'MY OTHER CONSTANT VALUE';
break;
}
return $val;
}
물론 구문은 약간 이상하게 보일 것입니다.
// Retrieve the "constant"
$foo = $this->FOO;
...하지만 적어도 이것은 작동하지 않을 것입니다.
$this->FOO = 'illegal!';
시도해 볼 가치가있는 것일까 요?
건배
여러분! PHP 7.1.0이 출시되었습니다.
이제 클래스 상수로 가시성 수정자를 가질 수 있습니다.
<?php
class Foo {
// As of PHP 7.1.0
public const BAR = 'bar';
private const BAZ = 'baz';
}
echo Foo::BAR, PHP_EOL;
echo Foo::BAZ, PHP_EOL;
?>
PHP 7.1에서 위 예제의 출력 :
bar
Fatal error: Uncaught Error: Cannot access private const Foo::BAZ in …
클래스 상수에 대한 가시성 수정자가 PHP 7.1에 추가되었습니다.
RFC : 지원 클래스 상수 가시성
@Madbreaks의 해결 방법의 단순화 된 버전 : 개인 "상수"값을 반환하는 개인 정적 함수를 작성합니다.
private static function MY_CONSTANT() {
return "constant string";
}
용법:
public static function DoStuff() {
echo self::MY_CONSTANT();
}
참고 URL : https://stackoverflow.com/questions/10232434/are-private-constants-possible-in-php
반응형
'program tip' 카테고리의 다른 글
연관 배열 대 자바 스크립트의 객체 (0) | 2020.12.03 |
---|---|
WebView 내에서 파일 다운로드 (0) | 2020.12.03 |
Eclipse와 Vim의 간편한 통합? (0) | 2020.12.02 |
Mercurial 분기 및 책갈피 (0) | 2020.12.02 |
pip로 여러 버전의 패키지 설치 (0) | 2020.12.02 |