[PHP] SplEnum은 실험적이기 때문에 Java 같은 Enum 레벨을 만들었습니다.
7353 단어 PHP
큰 착오가 수정되었다.
2017/10/2
다음 절차에 큰 오류가 있습니다.
부모 클래스에 정의된static 속성은 모든 하위 클래스에서 공유됩니다.
아이구, 쪽팔려.
PHP도 Enum을 원하죠.맞죠?
기대되는 SplEnum
경고
이 확장 모듈은 실험적이다.이 확장 모듈의 동작, 함수 이름 및 기타 문서에 기재된 사항은 나중에 PHP를 발표할 때 예고 없이 변경될 수 있습니다.이 모듈의 사용을 스스로 책임지세요.
아직 실험 중이야!!
어쩔 수 없이 무리하게 했다.후회 안 했어.
너 뭐 했어?
이미 같은 사건이 많았지만
PHP로 Starter Enum 설치
PHP로 Starter Enum 설치
나 혼자 이런 거 갖고 싶어.class Day
{
const SUNDAY = new Day('日曜日', '市場');
const MONDAY = new Day('月曜日', '風呂');
const TUESDAY = new Day('火曜日', '入浴');
// ...
public function __constuct($label, $work) { /* ... */ }
public function getLabel() { /* ... */ }
public function getWork() { /* ... */ }
}
Day::SUNDAY->getLabel(); // ← 日曜日
Day::SUNDAY->getWork(); // ← 市場
const
중new
이기 때문에 이 코드는 이동하지 않습니다.
언젠가 해냈으면 좋겠다...
대안
용례
이렇게 사용하기 편한 물건을 만들어 보았어요.const
가 아니라 static
방법이 호출되었다.Day::SUNDAY()->getLabel(); // ← 日曜日
Day::SUNDAY()->getWork(); // ← 市場
switch case에서도 사용 가능합니다.function dayEnumTest(Day $day)
{
switch($day) {
case Day::MONDAY():
echo 'Mondays are bad.';
break;
case Day::SATURDAY():
case Day::SUNDAY():
echo 'Weekends are best.';
break;
default:
echo 'Midweek days are so-so.';
}
}
Enum 설치
Enum 설치는 다음과 같습니다.
덮어쓰기 initialize
방법 내에서 Enum의 물건을 초기화하고 있습니다.class Day extends \LAPL\Lang\PHPEnum
{
protected static function initialize() {
/* 第1引数が名前、第2引数がインスタンス */
self::register('SUNDAY', new Day('日曜日', '市場'));
self::register('MONDAY', new Day('月曜日', 'お風呂'));
self::register('TUESDAY', new Day('火曜日', '入浴'));
// ...
}
}
만든 물건
여기에 소스를 넣었어요.
https://github.com/sengokyu/php-enum
더 자세한 사용 방법은 테스트 용례를 보십시오.
https://github.com/sengokyu/php-enum/blob/master/Tests/PHPEnumTests.php
Reference
이 문제에 관하여([PHP] SplEnum은 실험적이기 때문에 Java 같은 Enum 레벨을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sengoku/items/3ca6a7d8c2b7135ef9bd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class Day
{
const SUNDAY = new Day('日曜日', '市場');
const MONDAY = new Day('月曜日', '風呂');
const TUESDAY = new Day('火曜日', '入浴');
// ...
public function __constuct($label, $work) { /* ... */ }
public function getLabel() { /* ... */ }
public function getWork() { /* ... */ }
}
Day::SUNDAY->getLabel(); // ← 日曜日
Day::SUNDAY->getWork(); // ← 市場
용례
이렇게 사용하기 편한 물건을 만들어 보았어요.
const
가 아니라 static
방법이 호출되었다.Day::SUNDAY()->getLabel(); // ← 日曜日
Day::SUNDAY()->getWork(); // ← 市場
switch case에서도 사용 가능합니다.function dayEnumTest(Day $day)
{
switch($day) {
case Day::MONDAY():
echo 'Mondays are bad.';
break;
case Day::SATURDAY():
case Day::SUNDAY():
echo 'Weekends are best.';
break;
default:
echo 'Midweek days are so-so.';
}
}
Enum 설치
Enum 설치는 다음과 같습니다.
덮어쓰기
initialize
방법 내에서 Enum의 물건을 초기화하고 있습니다.class Day extends \LAPL\Lang\PHPEnum
{
protected static function initialize() {
/* 第1引数が名前、第2引数がインスタンス */
self::register('SUNDAY', new Day('日曜日', '市場'));
self::register('MONDAY', new Day('月曜日', 'お風呂'));
self::register('TUESDAY', new Day('火曜日', '入浴'));
// ...
}
}
만든 물건
여기에 소스를 넣었어요.
https://github.com/sengokyu/php-enum
더 자세한 사용 방법은 테스트 용례를 보십시오.
https://github.com/sengokyu/php-enum/blob/master/Tests/PHPEnumTests.php
Reference
이 문제에 관하여([PHP] SplEnum은 실험적이기 때문에 Java 같은 Enum 레벨을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sengoku/items/3ca6a7d8c2b7135ef9bd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([PHP] SplEnum은 실험적이기 때문에 Java 같은 Enum 레벨을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sengoku/items/3ca6a7d8c2b7135ef9bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)