Skip to content

Instantly share code, notes, and snippets.

@yarimadam
Created July 24, 2023 13:26
Show Gist options
  • Save yarimadam/1e4cb2fd27cc9a63d2a18a057ba0f3b6 to your computer and use it in GitHub Desktop.
Save yarimadam/1e4cb2fd27cc9a63d2a18a057ba0f3b6 to your computer and use it in GitHub Desktop.
<?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