{"id":60,"date":"2021-11-30T08:51:37","date_gmt":"2021-11-29T23:51:37","guid":{"rendered":"https:\/\/www.b64.pw\/blog\/?p=60"},"modified":"2021-11-30T08:58:55","modified_gmt":"2021-11-29T23:58:55","slug":"php8-1%e3%81%ae%e6%96%b0%e6%a9%9f%e8%83%bdenum%e3%82%92%e8%a9%a6%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b","status":"publish","type":"post","link":"http:\/\/www.b64.pw\/blog\/?p=60","title":{"rendered":"PHP8.1\u306e\u65b0\u6a5f\u80fdenum\u3092\u8a66\u3057\u3066\u307f\u308b"},"content":{"rendered":"\n<p>\u89e6\u3063\u3066\u307f\u305f\u611f\u60f3\u306fenum\u3068\u69cb\u9020\u4f53\u304c\u5408\u308f\u3055\u3063\u305f\u611f\u3058\u3002<br>\u30e1\u30bd\u30c3\u30c9\u3092\u4f5c\u308c\u305f\u308a\u7d99\u627f\u30fbtrait\u3082\u9069\u7528\u3067\u304d\u308b\u3042\u305f\u308a\u306f\u30af\u30e9\u30b9\u3068\u3057\u3066\u306e\u6027\u683c\u3082\u6301\u3063\u3066\u3044\u308b\u3002<\/p>\n\n\n\n<p>\u4e3b\u306a\u4f7f\u3044\u305d\u3046\u306a\u7b87\u6240\u306f\u3053\u3093\u306a\u611f\u3058<br>Platforms::Ios \u3067\u5b9a\u7fa9\u3057\u305fenum\u306e\u5024\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3002<br>Platforms::Ios->name \u3067enum\u81ea\u4f53\u306e\u6587\u5b57\u5217&#8217;Ios&#8217;\u304c\u53d6\u5f97\u3067\u304d\u308b\u3002(toString()\u7684\u306a\u611f\u3058)<br>Platforms::tryFrom(1) \u3067\u30de\u30c3\u30c1\u3059\u308b\u5024\u306eenum\u3092\u53d6\u5f97\u3002\u306a\u3044\u5834\u5408\u306fNull\u3092\u8fd4\u3059\u3002<br>Platforms::Ios->getType() \u306e\u3088\u3046\u306b\u72ec\u81ea\u306e\u6319\u52d5\u3092\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092enum\u306b\u5b9a\u7fa9\u3067\u304d\u308b\u3002<br>Platforms::cases()\u3067\u3059\u3079\u3066\u306eenum\u3092\u5217\u6319\u3002<\/p>\n\n\n\n<p>\u5177\u4f53\u7684\u306a\u4f7f\u7528\u4f8b\u306f\u3053\u3093\u306a\u611f\u3058\u306a\u306e\u3067\u306f\u306a\u3044\u304b\u306a\u3068\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nenum Platforms : int{\n    case Ios = 1;\n    case Android = 2;\n    case Windows = 3;\n    case Macintosh = 4;\n    public function getType(){\n        return match($this){\n            self::Ios, self::Android => 'Mobile',\n            self::Windows, self::Macintosh => 'PC',\n        };\n    }\n}\n\nfunction CheckPlatform(Platforms $platform){\n    echo '============== enum check start =============='.PHP_EOL;\n    var_dump($platform->value);\n    var_dump($platform->name);\/\/ like toString\n    var_dump($platform->getType());\n    echo '============== enum check end =============='.PHP_EOL;\n}\n$pf = Platforms::from(4);\nCheckPlatform($pf);\n\/\/ $pf = Platforms::from(9999);\/\/ Fatal error: Uncaught ValueError:\n$pf = Platforms::tryFrom(9999) ?? Platforms::Ios;\nCheckPlatform($pf);\nvar_dump(Platforms::cases());\n\/*\n============== enum check start ==============\nint(4)\nstring(9) \"Macintosh\"\nstring(2) \"PC\"\n============== enum check end ==============\n============== enum check start ==============\nint(1)\nstring(3) \"Ios\"\nstring(6) \"Mobile\"\n============== enum check end ==============\narray(4) {\r\n  &#91;0]=>\r\n  enum(Platforms::Ios)\r\n  &#91;1]=>\r\n  enum(Platforms::Android)\r\n  &#91;2]=>\r\n  enum(Platforms::Windows)\r\n  &#91;3]=>\r\n  enum(Platforms::Macintosh)\r\n}\n *\/<\/code><\/pre>\n\n\n\n<p>\u307b\u304b\u306b\u3082interface\u3084\u7d99\u627f\u3001trait\u306a\u3069\u306e\u4f8b\u3084object\u3068\u306e\u9055\u3044\u304c\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u8a73\u3057\u304f\u7d39\u4ecb\u3055\u308c\u3066\u3044\u308b\u3002<br><a href=\"https:\/\/www.php.net\/manual\/en\/language.enumerations.overview.php\">https:\/\/www.php.net\/manual\/en\/language.enumerations.overview.php<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u89e6\u3063\u3066\u307f\u305f\u611f\u60f3\u306fenum\u3068\u69cb\u9020\u4f53\u304c\u5408\u308f\u3055\u3063\u305f\u611f\u3058\u3002\u30e1\u30bd\u30c3\u30c9\u3092 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=\/wp\/v2\/posts\/60"}],"collection":[{"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=60"}],"version-history":[{"count":4,"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=\/wp\/v2\/posts\/60\/revisions"}],"predecessor-version":[{"id":65,"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=\/wp\/v2\/posts\/60\/revisions\/65"}],"wp:attachment":[{"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=60"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=60"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.b64.pw\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=60"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}