당신은 PHP의 클래스 내에서 정적 상수를 사용할 수 있습니까?
저는 다음이 효과가 있을 것으로 예상했지만, 작동하지 않는 것 같습니다.
<?php
class Patterns
{
public static const EMAIL = "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix";
public static const INT = "/^\d+$/";
public static const USERNAME = "/^\w+$/";
}
이 오류가 발생하기 때문입니다.
syntax error, unexpected T_CONST, expecting T_VARIABLE
다음과 같이 클래스에서 const를 사용할 수 있습니다.
class Patterns {
const EMAIL = "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix";
const INT = "/^\d+$/";
const USERNAME = "/^\w+$/";
}
액세스할 수 있습니다.USERNAME다음과 같은 제약 조건:
Patterns::USERNAME
PHP에서 static과 const는 두 가지 다른 것입니다.
const는 클래스 상수를 나타냅니다.이들 변수는 앞에 '$'가 없기 때문에 일반 변수와 다르며, 앞에 가시성 수식어(공개, 보호, 비공개)를 둘 수 없습니다.구문:
class Test
{
const INT = "/^\d+$/";
}
그들은 항상 존재하기 때문에 불변입니다.
정적은 동일한 클래스의 개체 간에 공유되는 데이터를 나타냅니다.이 데이터는 수정할 수 있습니다.한 번에 실행 중인 인스턴스 수를 추적하는 클래스를 예로 들 수 있습니다.
class HowMany
{
private static $count = 0;
public function __construct()
{
self::$count++;
}
public function getCount()
{
return self::$count;
}
public function __destruct()
{
self::$count--;
}
}
$obj1 = new HowMany();
$obj2 = new HowMany();
echo $obj1->getCount();
unset($obj2);
echo $obj1->getCount();
정적 상수가 아니라 상수일 뿐입니다.
class Patterns
{
const EMAIL = "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix";
const INT = "/^\d+$/";
const USERNAME = "/^\w+$/";
}
echo Patterns::EMAIL;
No 클래스 상수에는 정적 레이블을 지정하거나 가시성을 할당할 수 없습니다.
http://php.net/manual/en/language.oop5.static.php
정적 또는 공용으로 선언할 필요는 없습니다.설명서의 예를 확인하십시오.
http://www.php.net/manual/en/language.oop5.constants.php
상수에 액세스하려면 어떻게 해야 합니까?
이것이 효과가 있을 것이라고 믿습니다.
echo Patterns::$EMAIL; //shows "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-...."
정적으로 선언하면 됩니다.
언급URL : https://stackoverflow.com/questions/3389380/can-you-use-static-constants-inside-classes-in-php
'programing' 카테고리의 다른 글
| MYSQL에서 매월 최대 날짜를 가져오는 방법 (0) | 2023.08.12 |
|---|---|
| Spring Scheduled 주석에서 고정 속도와 고정 지연의 차이점은 무엇입니까? (0) | 2023.08.12 |
| openpyxl을 사용하여 .xlsx 시트에 있는 행과 열의 수를 가져오는 방법이 있습니까? (0) | 2023.08.12 |
| Oracle 날짜를 문자열로 변환 (0) | 2023.08.12 |
| Amazon S3 boto - 폴더를 삭제하는 방법? (0) | 2023.08.12 |