Created
July 24, 2023 13:26
-
-
Save yarimadam/1e4cb2fd27cc9a63d2a18a057ba0f3b6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
declare(strict_types=1); | |
/** | |
* @throws LogicException | |
*/ | |
function matchSomething(TheType $type): string | |
{ | |
return match ($type->asString()) { | |
TheType::CONST_1, | |
TheType::CONST_2, | |
TheType::CONST_3, | |
TheType::CONST_4, | |
TheType::CONST_5, | |
TheType::CONST_6, | |
TheType::CONST_7, | |
TheType::CONST_8, | |
TheType::CONST_9, | |
TheType::CONST_10, | |
TheType::CONST_11, | |
TheType::CONST_12, | |
TheType::CONST_13, | |
TheType::CONST_14, | |
TheType::CONST_15, | |
TheType::CONST_16, | |
TheType::CONST_17, | |
TheType::CONST_18, | |
TheType::CONST_19, | |
TheType::CONST_20, | |
TheType::CONST_21, | |
TheType::CONST_22, | |
TheType::CONST_23, | |
TheType::CONST_24, | |
TheType::CONST_25, | |
TheType::CONST_26, | |
TheType::CONST_27, | |
TheType::CONST_28, | |
TheType::CONST_29, | |
TheType::CONST_30, | |
TheType::CONST_31, | |
TheType::CONST_32, | |
TheType::CONST_33, | |
TheType::CONST_34, | |
TheType::CONST_35, | |
TheType::CONST_36, | |
TheType::CONST_37, | |
TheType::CONST_38, | |
TheType::CONST_39, | |
TheType::CONST_40, | |
TheType::CONST_41, | |
TheType::CONST_42, | |
TheType::CONST_43, | |
TheType::CONST_44, | |
TheType::CONST_45, | |
TheType::CONST_46, | |
TheType::CONST_47, | |
TheType::CONST_48, | |
TheType::CONST_49, | |
TheType::CONST_50, | |
TheType::CONST_51, | |
TheType::CONST_52, | |
TheType::CONST_53, | |
TheType::CONST_54, | |
TheType::CONST_55, | |
TheType::CONST_56, | |
TheType::CONST_57, | |
TheType::CONST_58, | |
TheType::CONST_59, | |
TheType::CONST_60, | |
TheType::CONST_61, | |
TheType::CONST_62, | |
TheType::CONST_63, | |
TheType::CONST_64, | |
TheType::CONST_65, | |
TheType::CONST_66, | |
TheType::CONST_67, | |
TheType::CONST_68, | |
TheType::CONST_69, | |
TheType::CONST_70, | |
TheType::CONST_71, | |
TheType::CONST_72, | |
TheType::CONST_73, | |
TheType::CONST_74, | |
TheType::CONST_75, | |
TheType::CONST_76, | |
TheType::CONST_77, | |
TheType::CONST_78, | |
TheType::CONST_79, | |
TheType::CONST_80, | |
TheType::CONST_81, | |
TheType::CONST_82, | |
TheType::CONST_83, | |
TheType::CONST_84, | |
TheType::CONST_85, | |
TheType::CONST_86, | |
TheType::CONST_87, | |
TheType::CONST_88, | |
TheType::CONST_89, | |
TheType::CONST_90, | |
TheType::CONST_91, | |
TheType::CONST_92, | |
TheType::CONST_93, | |
TheType::CONST_94, | |
TheType::CONST_95, | |
TheType::CONST_96, | |
TheType::CONST_97, | |
TheType::CONST_98, | |
TheType::CONST_99, | |
TheType::CONST_100, | |
TheType::CONST_101, | |
TheType::CONST_102, | |
TheType::CONST_103, | |
TheType::CONST_104, | |
TheType::CONST_105, | |
TheType::CONST_106, | |
TheType::CONST_107, | |
TheType::CONST_108, | |
TheType::CONST_109, | |
TheType::CONST_110, | |
TheType::CONST_111, | |
TheType::CONST_112, | |
TheType::CONST_113, | |
TheType::CONST_114, | |
TheType::CONST_115, | |
TheType::CONST_116, | |
TheType::CONST_117, | |
TheType::CONST_118, | |
TheType::CONST_119, | |
TheType::CONST_120, | |
TheType::CONST_121, | |
TheType::CONST_122, | |
TheType::CONST_123, | |
TheType::CONST_124, | |
TheType::CONST_125, | |
TheType::CONST_126, | |
TheType::CONST_127, | |
TheType::CONST_128, | |
TheType::CONST_129, | |
TheType::CONST_130, | |
TheType::CONST_131, | |
TheType::CONST_132, | |
TheType::CONST_133, | |
TheType::CONST_134, | |
TheType::CONST_135, | |
TheType::CONST_136, | |
TheType::CONST_137, | |
TheType::CONST_138, | |
TheType::CONST_139, | |
TheType::CONST_140, | |
TheType::CONST_141, | |
TheType::CONST_142, | |
TheType::CONST_143, | |
TheType::CONST_144, | |
TheType::CONST_145, | |
TheType::CONST_146, | |
TheType::CONST_147, | |
TheType::CONST_148, | |
TheType::CONST_149, | |
TheType::CONST_150, | |
TheType::CONST_151, | |
TheType::CONST_152, | |
TheType::CONST_153, | |
TheType::CONST_154, | |
TheType::CONST_155, | |
TheType::CONST_156, | |
TheType::CONST_157, | |
TheType::CONST_158, | |
TheType::CONST_159, | |
TheType::CONST_160, | |
TheType::CONST_161, | |
TheType::CONST_162, | |
TheType::CONST_163, | |
TheType::CONST_164, | |
TheType::CONST_165, | |
TheType::CONST_166, | |
TheType::CONST_167, | |
TheType::CONST_168, | |
TheType::CONST_169, | |
TheType::CONST_170, | |
TheType::CONST_171, | |
TheType::CONST_172, | |
TheType::CONST_173, | |
TheType::CONST_174, | |
TheType::CONST_175, | |
TheType::CONST_176, | |
TheType::CONST_177, | |
TheType::CONST_178, | |
TheType::CONST_179, | |
TheType::CONST_180, | |
TheType::CONST_181, | |
TheType::CONST_182, | |
TheType::CONST_183, | |
TheType::CONST_184, | |
TheType::CONST_185, | |
TheType::CONST_186, | |
TheType::CONST_187, | |
TheType::CONST_188, | |
TheType::CONST_189, | |
TheType::CONST_190, | |
TheType::CONST_191, | |
TheType::CONST_192, | |
TheType::CONST_193, | |
TheType::CONST_194, | |
TheType::CONST_195, | |
TheType::CONST_196, | |
TheType::CONST_197, | |
TheType::CONST_198, | |
TheType::CONST_199, | |
TheType::CONST_200 => 'finally', | |
default => throw new \LogicException('boo'), | |
}; | |
} | |
class TheType | |
{ | |
final public const CONST_1 = 'value1'; | |
final public const CONST_2 = 'value2'; | |
final public const CONST_3 = 'value3'; | |
final public const CONST_4 = 'value4'; | |
final public const CONST_5 = 'value5'; | |
final public const CONST_6 = 'value6'; | |
final public const CONST_7 = 'value7'; | |
final public const CONST_8 = 'value8'; | |
final public const CONST_9 = 'value9'; | |
final public const CONST_10 = 'value10'; | |
final public const CONST_11 = 'value11'; | |
final public const CONST_12 = 'value12'; | |
final public const CONST_13 = 'value13'; | |
final public const CONST_14 = 'value14'; | |
final public const CONST_15 = 'value15'; | |
final public const CONST_16 = 'value16'; | |
final public const CONST_17 = 'value17'; | |
final public const CONST_18 = 'value18'; | |
final public const CONST_19 = 'value19'; | |
final public const CONST_20 = 'value20'; | |
final public const CONST_21 = 'value21'; | |
final public const CONST_22 = 'value22'; | |
final public const CONST_23 = 'value23'; | |
final public const CONST_24 = 'value24'; | |
final public const CONST_25 = 'value25'; | |
final public const CONST_26 = 'value26'; | |
final public const CONST_27 = 'value27'; | |
final public const CONST_28 = 'value28'; | |
final public const CONST_29 = 'value29'; | |
final public const CONST_30 = 'value30'; | |
final public const CONST_31 = 'value31'; | |
final public const CONST_32 = 'value32'; | |
final public const CONST_33 = 'value33'; | |
final public const CONST_34 = 'value34'; | |
final public const CONST_35 = 'value35'; | |
final public const CONST_36 = 'value36'; | |
final public const CONST_37 = 'value37'; | |
final public const CONST_38 = 'value38'; | |
final public const CONST_39 = 'value39'; | |
final public const CONST_40 = 'value40'; | |
final public const CONST_41 = 'value41'; | |
final public const CONST_42 = 'value42'; | |
final public const CONST_43 = 'value43'; | |
final public const CONST_44 = 'value44'; | |
final public const CONST_45 = 'value45'; | |
final public const CONST_46 = 'value46'; | |
final public const CONST_47 = 'value47'; | |
final public const CONST_48 = 'value48'; | |
final public const CONST_49 = 'value49'; | |
final public const CONST_50 = 'value50'; | |
final public const CONST_51 = 'value51'; | |
final public const CONST_52 = 'value52'; | |
final public const CONST_53 = 'value53'; | |
final public const CONST_54 = 'value54'; | |
final public const CONST_55 = 'value55'; | |
final public const CONST_56 = 'value56'; | |
final public const CONST_57 = 'value57'; | |
final public const CONST_58 = 'value58'; | |
final public const CONST_59 = 'value59'; | |
final public const CONST_60 = 'value60'; | |
final public const CONST_61 = 'value61'; | |
final public const CONST_62 = 'value62'; | |
final public const CONST_63 = 'value63'; | |
final public const CONST_64 = 'value64'; | |
final public const CONST_65 = 'value65'; | |
final public const CONST_66 = 'value66'; | |
final public const CONST_67 = 'value67'; | |
final public const CONST_68 = 'value68'; | |
final public const CONST_69 = 'value69'; | |
final public const CONST_70 = 'value70'; | |
final public const CONST_71 = 'value71'; | |
final public const CONST_72 = 'value72'; | |
final public const CONST_73 = 'value73'; | |
final public const CONST_74 = 'value74'; | |
final public const CONST_75 = 'value75'; | |
final public const CONST_76 = 'value76'; | |
final public const CONST_77 = 'value77'; | |
final public const CONST_78 = 'value78'; | |
final public const CONST_79 = 'value79'; | |
final public const CONST_80 = 'value80'; | |
final public const CONST_81 = 'value81'; | |
final public const CONST_82 = 'value82'; | |
final public const CONST_83 = 'value83'; | |
final public const CONST_84 = 'value84'; | |
final public const CONST_85 = 'value85'; | |
final public const CONST_86 = 'value86'; | |
final public const CONST_87 = 'value87'; | |
final public const CONST_88 = 'value88'; | |
final public const CONST_89 = 'value89'; | |
final public const CONST_90 = 'value90'; | |
final public const CONST_91 = 'value91'; | |
final public const CONST_92 = 'value92'; | |
final public const CONST_93 = 'value93'; | |
final public const CONST_94 = 'value94'; | |
final public const CONST_95 = 'value95'; | |
final public const CONST_96 = 'value96'; | |
final public const CONST_97 = 'value97'; | |
final public const CONST_98 = 'value98'; | |
final public const CONST_99 = 'value99'; | |
final public const CONST_100 = 'value100'; | |
final public const CONST_101 = 'value101'; | |
final public const CONST_102 = 'value102'; | |
final public const CONST_103 = 'value103'; | |
final public const CONST_104 = 'value104'; | |
final public const CONST_105 = 'value105'; | |
final public const CONST_106 = 'value106'; | |
final public const CONST_107 = 'value107'; | |
final public const CONST_108 = 'value108'; | |
final public const CONST_109 = 'value109'; | |
final public const CONST_110 = 'value110'; | |
final public const CONST_111 = 'value111'; | |
final public const CONST_112 = 'value112'; | |
final public const CONST_113 = 'value113'; | |
final public const CONST_114 = 'value114'; | |
final public const CONST_115 = 'value115'; | |
final public const CONST_116 = 'value116'; | |
final public const CONST_117 = 'value117'; | |
final public const CONST_118 = 'value118'; | |
final public const CONST_119 = 'value119'; | |
final public const CONST_120 = 'value120'; | |
final public const CONST_121 = 'value121'; | |
final public const CONST_122 = 'value122'; | |
final public const CONST_123 = 'value123'; | |
final public const CONST_124 = 'value124'; | |
final public const CONST_125 = 'value125'; | |
final public const CONST_126 = 'value126'; | |
final public const CONST_127 = 'value127'; | |
final public const CONST_128 = 'value128'; | |
final public const CONST_129 = 'value129'; | |
final public const CONST_130 = 'value130'; | |
final public const CONST_131 = 'value131'; | |
final public const CONST_132 = 'value132'; | |
final public const CONST_133 = 'value133'; | |
final public const CONST_134 = 'value134'; | |
final public const CONST_135 = 'value135'; | |
final public const CONST_136 = 'value136'; | |
final public const CONST_137 = 'value137'; | |
final public const CONST_138 = 'value138'; | |
final public const CONST_139 = 'value139'; | |
final public const CONST_140 = 'value140'; | |
final public const CONST_141 = 'value141'; | |
final public const CONST_142 = 'value142'; | |
final public const CONST_143 = 'value143'; | |
final public const CONST_144 = 'value144'; | |
final public const CONST_145 = 'value145'; | |
final public const CONST_146 = 'value146'; | |
final public const CONST_147 = 'value147'; | |
final public const CONST_148 = 'value148'; | |
final public const CONST_149 = 'value149'; | |
final public const CONST_150 = 'value150'; | |
final public const CONST_151 = 'value151'; | |
final public const CONST_152 = 'value152'; | |
final public const CONST_153 = 'value153'; | |
final public const CONST_154 = 'value154'; | |
final public const CONST_155 = 'value155'; | |
final public const CONST_156 = 'value156'; | |
final public const CONST_157 = 'value157'; | |
final public const CONST_158 = 'value158'; | |
final public const CONST_159 = 'value159'; | |
final public const CONST_160 = 'value160'; | |
final public const CONST_161 = 'value161'; | |
final public const CONST_162 = 'value162'; | |
final public const CONST_163 = 'value163'; | |
final public const CONST_164 = 'value164'; | |
final public const CONST_165 = 'value165'; | |
final public const CONST_166 = 'value166'; | |
final public const CONST_167 = 'value167'; | |
final public const CONST_168 = 'value168'; | |
final public const CONST_169 = 'value169'; | |
final public const CONST_170 = 'value170'; | |
final public const CONST_171 = 'value171'; | |
final public const CONST_172 = 'value172'; | |
final public const CONST_173 = 'value173'; | |
final public const CONST_174 = 'value174'; | |
final public const CONST_175 = 'value175'; | |
final public const CONST_176 = 'value176'; | |
final public const CONST_177 = 'value177'; | |
final public const CONST_178 = 'value178'; | |
final public const CONST_179 = 'value179'; | |
final public const CONST_180 = 'value180'; | |
final public const CONST_181 = 'value181'; | |
final public const CONST_182 = 'value182'; | |
final public const CONST_183 = 'value183'; | |
final public const CONST_184 = 'value184'; | |
final public const CONST_185 = 'value185'; | |
final public const CONST_186 = 'value186'; | |
final public const CONST_187 = 'value187'; | |
final public const CONST_188 = 'value188'; | |
final public const CONST_189 = 'value189'; | |
final public const CONST_190 = 'value190'; | |
final public const CONST_191 = 'value191'; | |
final public const CONST_192 = 'value192'; | |
final public const CONST_193 = 'value193'; | |
final public const CONST_194 = 'value194'; | |
final public const CONST_195 = 'value195'; | |
final public const CONST_196 = 'value196'; | |
final public const CONST_197 = 'value197'; | |
final public const CONST_198 = 'value198'; | |
final public const CONST_199 = 'value199'; | |
final public const CONST_200 = 'value200'; | |
public function asString(): string | |
{ | |
return $this->type; | |
} | |
private function __construct( | |
private readonly string $type | |
) | |
{ | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment