{"id":645,"date":"2026-06-15T15:19:33","date_gmt":"2026-06-15T15:19:33","guid":{"rendered":"https:\/\/hyc.eshachem.com\/program\/?page_id=645"},"modified":"2026-06-18T05:26:51","modified_gmt":"2026-06-18T05:26:51","slug":"php-%e5%be%9e0%e9%96%8b%e5%a7%8b%e5%88%b0wordpress%e5%b0%88%e6%a1%88%e9%96%8b%e7%99%bc","status":"publish","type":"page","link":"https:\/\/hyc.eshachem.com\/program\/technical-articles\/php-%e5%be%9e0%e9%96%8b%e5%a7%8b%e5%88%b0wordpress%e5%b0%88%e6%a1%88%e9%96%8b%e7%99%bc\/","title":{"rendered":"PHP : \u5f9e\u96f6\u958b\u59cb"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u9019\u662f\u4e00\u7bc7\u95dc\u65bcPHP\u5f9e0\u958b\u59cb\u7684\u5c0f\u96fb\u5b50\u66f8!<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e5%89%8d%e8%a8%80%ef%bc%9aphp-%e5%9c%a8%e5%81%9a%e4%bb%80%e9%ba%bc\">\u524d\u8a00\uff1aPHP \u5728\u505a\u4ec0\u9ebc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PHP<\/strong>\uff08PHP: Hypertext Preprocessor\uff09\u662f\u5728<strong>\u4f3a\u670d\u5668\u7aef<\/strong>\u57f7\u884c\u7684\u7a0b\u5f0f\u8a9e\u8a00\u3002\u4f7f\u7528\u8005\u7528\u700f\u89bd\u5668\u8acb\u6c42\u4e00\u500b <code>.php<\/code> \u7db2\u5740\uff0cWeb \u4f3a\u670d\u5668\u57f7\u884c PHP\uff0c\u901a\u5e38\u67e5\u8cc7\u6599\u5eab\u3001\u7d44\u88dd\u908f\u8f2f\uff0c\u6700\u5f8c\u8f38\u51fa <strong>HTML \/ JSON<\/strong> \u56de\u50b3\u3002<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n  participant B as \u700f\u89bd\u5668\n  participant S as Apache\/Nginx + PHP\n  participant D as MySQL\n\n  B-&gt;&gt;S: GET \/users.php\n  S-&gt;&gt;D: SELECT * FROM users\n  D-&gt;&gt;S: \u8cc7\u6599\u5217\n  S-&gt;&gt;S: PHP \u7d44\u88dd\u56de\u61c9\n  S-&gt;&gt;B: HTML \u6216 JSON<\/pre><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">PHP \u4e26\u975e\u8f38\u51faHTML\u800c\u662f\u5d4c\u5165HTML\u6a19\u7c64\u4e2d\uff0c\u4ee5\u7279\u6b8a\u7684<code>&lt;?php?&gt;<\/code>\u6a19\u7c64\u4f86\u5ba3\u544aPHP\u7247\u6bb5\u3002<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"477\" src=\"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/7B78553C-CA15-4CFC-B8A3-75D453FF18B2-1024x477.png\" alt=\"\" class=\"wp-image-655\" srcset=\"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/7B78553C-CA15-4CFC-B8A3-75D453FF18B2-1024x477.png 1024w, https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/7B78553C-CA15-4CFC-B8A3-75D453FF18B2-300x140.png 300w, https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/7B78553C-CA15-4CFC-B8A3-75D453FF18B2-768x358.png 768w, https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/7B78553C-CA15-4CFC-B8A3-75D453FF18B2.png 1053w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-0-%e7%ab%a0%ef%bc%9a%e9%96%8b%e7%99%bc%e7%92%b0%e5%a2%83\">\u7b2c 0 \u7ae0\uff1a\u958b\u767c\u74b0\u5883<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"%e5%bf%ab%e9%80%9f%e9%96%8b%e5%a7%8b\">\u5feb\u901f\u958b\u59cb<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u524d\u5f80codesandbox\u7dda\u4e0a\u7de8\u8f2f\u5668\uff0c\u5efa\u7acb\u5e33\u865f\u5f8c\u5efa\u7acbphp\u5c08\u6848<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"319\" src=\"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/DC620BFD-260A-4DEF-A7DB-2B213D2CED24-1024x319.png\" alt=\"\" class=\"wp-image-657\" srcset=\"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/DC620BFD-260A-4DEF-A7DB-2B213D2CED24-1024x319.png 1024w, https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/DC620BFD-260A-4DEF-A7DB-2B213D2CED24-300x93.png 300w, https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/DC620BFD-260A-4DEF-A7DB-2B213D2CED24-768x239.png 768w, https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/DC620BFD-260A-4DEF-A7DB-2B213D2CED24-1536x478.png 1536w, https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/DC620BFD-260A-4DEF-A7DB-2B213D2CED24.png 1917w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u672c\u5730\u74b0\u5883\u5b89\u88dd<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u63d0\u4f9b\u5982\u679c\u60f3\u8981\u5728\u81ea\u5df1\u672c\u5730\u5b89\u88dd\u74b0\u5883:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u5143\u4ef6<\/th><th>\u4f5c\u7528<\/th><\/tr><\/thead><tbody><tr><td>PHP 8.2+<\/td><td>\u8a9e\u8a00\u57f7\u884c\u74b0\u5883\uff08\u5efa\u8b70 8.1 \u4ee5\u4e0a\uff09<\/td><\/tr><tr><td>Web Server<\/td><td>Apache \u6216 Nginx\uff08\u6216\u7528 PHP \u5167\u5efa\u4f3a\u670d\u5668\u958b\u767c\uff09<\/td><\/tr><tr><td>MySQL \/ MariaDB \/ SQLite<\/td><td>\u5132\u5b58\u8cc7\u6599\uff08\u9032\u968e\u7ae0\u7bc0\uff09<\/td><\/tr><tr><td>\u7de8\u8f2f\u5668<\/td><td>VS Code\u3001PhpStorm<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e00\u9375\u5b89\u88dd\u5305<\/strong>\uff08\u64c7\u4e00\uff09\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.apachefriends.org\/\">XAMPP<\/a>\uff08Windows \/ macOS \/ Linux\uff09<\/li>\n\n\n\n<li><a href=\"https:\/\/laragon.org\/\">Laragon<\/a>\uff08Windows\uff0c\u8f15\u91cf\u597d\u7528\uff09<\/li>\n\n\n\n<li>Docker\uff1a<code>php:8.3-apache<\/code> \u6620\u50cf<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u5c08\u6848\u76ee\u9304\u57f7\u884c\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">php<\/span> <span class=\"hljs-selector-tag\">-S<\/span> <span class=\"hljs-selector-tag\">localhost<\/span><span class=\"hljs-selector-pseudo\">:8000<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u700f\u89bd <code>http:\/\/localhost:8000\/index.php<\/code> \u5373\u53ef\u3002\u9069\u5408\u5b78\u7fd2\uff0c\u6b63\u5f0f\u74b0\u5883\u8acb\u7528 Apache\/Nginx\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>info.php<\/code>\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\nphpinfo();<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u770b\u5230\u7d2b\u8272\u8cc7\u8a0a\u9801\u4ee3\u8868\u6210\u529f\u3002<strong>\u6b63\u5f0f\u74b0\u5883\u52d9\u5fc5\u522a\u9664<\/strong>\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CLI \u6a21\u5f0f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PHP \u4e0d\u53ea\u80fd\u8dd1\u7db2\u9801\uff0c\u4e5f\u80fd\u5728\u7d42\u7aef\u6a5f\u57f7\u884c\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">php -r <span class=\"hljs-string\">\"echo 2 + 2;\"<\/span>\nphp script.php<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5efa\u8b70 VS Code \u64f4\u5145<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PHP Intelephense<\/li>\n\n\n\n<li>PHP Debug\uff08Xdebug\uff09<\/li>\n\n\n\n<li>EditorConfig<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-1-%e7%ab%a0%ef%bc%9a%e7%ac%ac%e4%b8%80%e6%94%af-php-%e7%a8%8b%e5%bc%8f\">\u7b2c 1 \u7ae0\uff1a\u7b2c\u4e00\u652f PHP \u7a0b\u5f0f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u57fa\u672c\u898f\u5247<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u7a0b\u5f0f\u5beb\u5728 <code>&lt;?php ... ?&gt;<\/code> \u5167\uff08\u6a94\u5c3e\u53ef\u7701\u7565 <code>?&gt;<\/code>\uff0c\u5efa\u8b70\u7701\u7565\u907f\u514d\u591a\u9918\u7a7a\u767d\uff09<\/li>\n\n\n\n<li>\u9673\u8ff0\u4ee5 <code>;<\/code> \u7d50\u5c3e<\/li>\n\n\n\n<li>\u526f\u6a94\u540d <code>.php<\/code><\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'Hello, World!'<\/span>;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8207 HTML \u6df7\u5beb<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-meta\">&lt;!DOCTYPE <span class=\"hljs-meta-keyword\">html<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">html<\/span> <span class=\"hljs-attr\">lang<\/span>=<span class=\"hljs-string\">\"zh-Hant\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">head<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">charset<\/span>=<span class=\"hljs-string\">\"UTF-8\"<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">title<\/span>&gt;<\/span><span class=\"php\"><span class=\"hljs-meta\">&lt;?<\/span>= <span class=\"hljs-string\">'\u6211\u7684\u7db2\u7ad9'<\/span> <span class=\"hljs-meta\">?&gt;<\/span><\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">title<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">head<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">body<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h1<\/span>&gt;<\/span><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span> <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'\u6b61\u8fce'<\/span>; <span class=\"hljs-meta\">?&gt;<\/span><\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span>&gt;<\/span>\u73fe\u5728\u6642\u9593\uff1a<span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span> <span class=\"hljs-keyword\">echo<\/span> date( <span class=\"hljs-string\">'Y-m-d H:i'<\/span> ); <span class=\"hljs-meta\">?&gt;<\/span><\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">body<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">html<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><code>&lt;?= ... ?&gt;<\/code> \u662f <code>&lt;?php echo ... ?&gt;<\/code> \u7684\u7c21\u5beb\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8a3b\u89e3<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ \u55ae\u884c\u8a3b\u89e3<\/span>\n<span class=\"hljs-comment\"># \u4e5f\u662f\u55ae\u884c<\/span>\n\n<span class=\"hljs-comment\">\/*\n  \u591a\u884c\n  \u8a3b\u89e3\n*\/<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-2-%e7%ab%a0%ef%bc%9a%e8%ae%8a%e6%95%b8%e3%80%81%e5%9e%8b%e5%88%a5%e8%88%87%e9%81%8b%e7%ae%97%e5%ad%90\">\u7b2c 2 \u7ae0\uff1a\u8b8a\u6578\u3001\u578b\u5225\u8207\u904b\u7b97\u5b50<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8b8a\u6578<\/strong><br>\u4ee5 <code>$<\/code> \u958b\u982d\uff0c\u5340\u5206\u5927\u5c0f\u5beb\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$name = <span class=\"hljs-string\">'Alice'<\/span>;\n$age  = <span class=\"hljs-number\">25<\/span>;\n$price = <span class=\"hljs-number\">19.99<\/span>;\n$active = <span class=\"hljs-keyword\">true<\/span>;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5e38\u898b\u578b\u5225<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u578b\u5225<\/th><th>\u7bc4\u4f8b<\/th><\/tr><\/thead><tbody><tr><td><code>string<\/code><\/td><td><code>'hello'<\/code><\/td><\/tr><tr><td><code>int<\/code><\/td><td><code>42<\/code><\/td><\/tr><tr><td><code>float<\/code><\/td><td><code>3.14<\/code><\/td><\/tr><tr><td><code>bool<\/code><\/td><td><code>true<\/code> \/ <code>false<\/code><\/td><\/tr><tr><td><code>array<\/code><\/td><td><code>[1, 2, 3]<\/code><\/td><\/tr><tr><td><code>null<\/code><\/td><td><code>null<\/code><\/td><\/tr><tr><td><code>object<\/code><\/td><td><code>new User()<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">PHP 8+ \u53ef\u5ba3\u544a\u578b\u5225\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">add<\/span><span class=\"hljs-params\">( int $a, int $b )<\/span>: <span class=\"hljs-title\">int<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> $a + $b;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5bec\u9b06\u8f49\u578b<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-string\">'5'<\/span> + <span class=\"hljs-number\">2<\/span>;   <span class=\"hljs-comment\">\/\/ 7\uff08\u5b57\u4e32\u81ea\u52d5\u8f49\u6578\u5b57\uff09<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u5be6\u52d9\u4e0a\u61c9<strong>\u660e\u78ba\u8f49\u578b<\/strong>\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$id = (int) $_GET[<span class=\"hljs-string\">'id'<\/span>];\n$price = (float) $row[<span class=\"hljs-string\">'price'<\/span>];<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u91cd\u8981\u904b\u7b97\u5b50<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$a + $b;    <span class=\"hljs-comment\">\/\/ \u52a0<\/span>\n$a . $b;    <span class=\"hljs-comment\">\/\/ \u5b57\u4e32\u9023\u63a5\uff08\u6975\u5e38\u7528\uff09<\/span>\n$a === $b;  <span class=\"hljs-comment\">\/\/ \u56b4\u683c\u76f8\u7b49\uff08\u578b\u5225+\u503c\uff09<\/span>\n$a ?? $b;   <span class=\"hljs-comment\">\/\/ $a \u70ba null \u5247\u7528 $b<\/span>\n$a ?: $b;   <span class=\"hljs-comment\">\/\/ $a \u70ba\u5047\u503c\u5247\u7528 $b<\/span>\n$a &lt;=&gt; $b;  <span class=\"hljs-comment\">\/\/ \u592a\u7a7a\u8239\uff1a\u6bd4\u8f03\u5927\u5c0f\u56de\u50b3 -1\/0\/1<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5b57\u4e32\uff08\u5169\u7a2e\u5f15\u865f\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$name = <span class=\"hljs-string\">'Bob'<\/span>;\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Hello, $name\"<\/span>;   <span class=\"hljs-comment\">\/\/ \u96d9\u5f15\u865f\u53ef\u63d2\u503c<\/span>\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'Hello, $name'<\/span>;   <span class=\"hljs-comment\">\/\/ \u55ae\u5f15\u865f\u5927\u90e8\u5206\u539f\u6a23\u8f38\u51fa<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-3-%e7%ab%a0%ef%bc%9a%e6%b5%81%e7%a8%8b%e6%8e%a7%e5%88%b6\">\u7b2c 3 \u7ae0\uff1a\u6d41\u7a0b\u63a7\u5236<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>if \/ elseif \/ else<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$score = <span class=\"hljs-number\">85<\/span>;\n\n<span class=\"hljs-keyword\">if<\/span> ( $score &gt;= <span class=\"hljs-number\">90<\/span> ) {\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'A'<\/span>;\n} <span class=\"hljs-keyword\">elseif<\/span> ( $score &gt;= <span class=\"hljs-number\">80<\/span> ) {\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'B'<\/span>;\n} <span class=\"hljs-keyword\">else<\/span> {\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'C'<\/span>;\n}<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u66ff\u4ee3\u8a9e\u6cd5\uff08\u6a21\u677f\u5e38\u7528\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span> <span class=\"hljs-keyword\">if<\/span> ( $logged_in ) : <span class=\"hljs-meta\">?&gt;<\/span><\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span>&gt;<\/span>\u6b61\u8fce\u56de\u4f86<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n<span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span> <span class=\"hljs-keyword\">else<\/span> : <span class=\"hljs-meta\">?&gt;<\/span><\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span>&gt;<\/span>\u8acb\u767b\u5165<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n<span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span> <span class=\"hljs-keyword\">endif<\/span>; <span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>switch\u3001match\uff08PHP 8+\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$role = <span class=\"hljs-string\">'editor'<\/span>;\n\n<span class=\"hljs-keyword\">switch<\/span> ( $role ) {\n    <span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">'admin'<\/span>:\n        $level = <span class=\"hljs-number\">3<\/span>;\n        <span class=\"hljs-keyword\">break<\/span>;\n    <span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-string\">'editor'<\/span>:\n        $level = <span class=\"hljs-number\">2<\/span>;\n        <span class=\"hljs-keyword\">break<\/span>;\n    <span class=\"hljs-keyword\">default<\/span>:\n        $level = <span class=\"hljs-number\">1<\/span>;\n}\n\n<span class=\"hljs-comment\">\/\/ match \u66f4\u7c21\u6f54\uff0c\u5fc5\u9808\u6db5\u84cb\u6240\u6709\u60c5\u6cc1\u6216 default<\/span>\n$label = match ( $role ) {\n    <span class=\"hljs-string\">'admin'<\/span>   =&gt; <span class=\"hljs-string\">'\u7ba1\u7406\u54e1'<\/span>,\n    <span class=\"hljs-string\">'editor'<\/span>  =&gt; <span class=\"hljs-string\">'\u7de8\u8f2f'<\/span>,\n    <span class=\"hljs-keyword\">default<\/span>   =&gt; <span class=\"hljs-string\">'\u8a2a\u5ba2'<\/span>,\n};<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8ff4\u5708<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-keyword\">for<\/span> ( $i = <span class=\"hljs-number\">0<\/span>; $i &lt; <span class=\"hljs-number\">5<\/span>; $i++ ) {\n    <span class=\"hljs-keyword\">echo<\/span> $i;\n}\n\n$items = [ <span class=\"hljs-string\">'PHP'<\/span>, <span class=\"hljs-string\">'MySQL'<\/span>, <span class=\"hljs-string\">'HTML'<\/span> ];\n<span class=\"hljs-keyword\">foreach<\/span> ( $items <span class=\"hljs-keyword\">as<\/span> $item ) {\n    <span class=\"hljs-keyword\">echo<\/span> $item;\n}\n\n<span class=\"hljs-keyword\">foreach<\/span> ( $user <span class=\"hljs-keyword\">as<\/span> $key =&gt; $value ) {\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"$key: $value\"<\/span>;\n}\n\n<span class=\"hljs-keyword\">while<\/span> ( $row = $stmt-&gt;fetch() ) {\n    <span class=\"hljs-comment\">\/\/ \u8655\u7406\u6bcf\u4e00\u5217<\/span>\n}<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>break \/ continue<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">foreach<\/span> ( $items <span class=\"hljs-keyword\">as<\/span> $item ) {\n    <span class=\"hljs-keyword\">if<\/span> ( $item === <span class=\"hljs-string\">'skip'<\/span> ) {\n        <span class=\"hljs-keyword\">continue<\/span>; <span class=\"hljs-comment\">\/\/ \u8df3\u904e\u672c\u6b21<\/span>\n    }\n    <span class=\"hljs-keyword\">if<\/span> ( $item === <span class=\"hljs-string\">'stop'<\/span> ) {\n        <span class=\"hljs-keyword\">break<\/span>;    <span class=\"hljs-comment\">\/\/ \u7d50\u675f\u8ff4\u5708<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-4-%e7%ab%a0%ef%bc%9a%e5%87%bd%e5%bc%8f\">\u7b2c 4 \u7ae0\uff1a\u51fd\u5f0f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5b9a\u7fa9\u8207\u56de\u50b3<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">greet<\/span><span class=\"hljs-params\">( string $name )<\/span>: <span class=\"hljs-title\">string<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-string\">'Hello, '<\/span> . $name;\n}\n\n<span class=\"hljs-keyword\">echo<\/span> greet( <span class=\"hljs-string\">'World'<\/span> );<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u9810\u8a2d\u53c3\u6578\u8207\u547d\u540d\u53c3\u6578<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">paginate<\/span><span class=\"hljs-params\">( int $page = <span class=\"hljs-number\">1<\/span>, int $per_page = <span class=\"hljs-number\">10<\/span> )<\/span>: <span class=\"hljs-title\">array<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> [ <span class=\"hljs-string\">'page'<\/span> =&gt; $page, <span class=\"hljs-string\">'per_page'<\/span> =&gt; $per_page ];\n}\n\npaginate( per_page: <span class=\"hljs-number\">20<\/span>, page: <span class=\"hljs-number\">2<\/span> ); <span class=\"hljs-comment\">\/\/ PHP 8 \u547d\u540d\u53c3\u6578<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u53ef\u8b8a\u53c3\u6578<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">sum<\/span><span class=\"hljs-params\">( int ...$nums )<\/span>: <span class=\"hljs-title\">int<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> array_sum( $nums );\n}\n\nsum( <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span> ); <span class=\"hljs-comment\">\/\/ 6<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u9632\u6b62\u91cd\u8907\u5b9a\u7fa9<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-21\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">if<\/span> ( ! function_exists( <span class=\"hljs-string\">'my_helper'<\/span> ) ) {\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">my_helper<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{\n        <span class=\"hljs-comment\">\/\/ ...<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-21\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u533f\u540d\u51fd\u5f0f\u8207\u9589\u5305<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-22\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$multiplier = <span class=\"hljs-number\">3<\/span>;\n$fn = <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">( int $n )<\/span> <span class=\"hljs-title\">use<\/span> <span class=\"hljs-params\">( $multiplier )<\/span>: <span class=\"hljs-title\">int<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> $n * $multiplier;\n};\n\n<span class=\"hljs-keyword\">echo<\/span> $fn( <span class=\"hljs-number\">4<\/span> ); <span class=\"hljs-comment\">\/\/ 12<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-22\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u7bad\u982d\u51fd\u5f0f\uff08PHP 7.4+\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-23\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$double = fn( int $n ) =&gt; $n * <span class=\"hljs-number\">2<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-23\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-5-%e7%ab%a0%ef%bc%9a%e9%99%a3%e5%88%97\">\u7b2c 5 \u7ae0\uff1a\u9663\u5217<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u7d22\u5f15\u8207\u95dc\u806f\u9663\u5217<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-24\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$list = [ <span class=\"hljs-string\">'apple'<\/span>, <span class=\"hljs-string\">'banana'<\/span> ];\n$user = [\n    <span class=\"hljs-string\">'id'<\/span>   =&gt; <span class=\"hljs-number\">1<\/span>,\n    <span class=\"hljs-string\">'name'<\/span> =&gt; <span class=\"hljs-string\">'Alice'<\/span>,\n    <span class=\"hljs-string\">'role'<\/span> =&gt; <span class=\"hljs-string\">'admin'<\/span>,\n];\n\n<span class=\"hljs-keyword\">echo<\/span> $user[<span class=\"hljs-string\">'name'<\/span>];<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-24\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5e38\u7528\u51fd\u5f0f<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-25\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">count( $arr );\n<span class=\"hljs-keyword\">empty<\/span>( $arr );\n<span class=\"hljs-keyword\">isset<\/span>( $arr[<span class=\"hljs-string\">'key'<\/span>] );\narray_key_exists( <span class=\"hljs-string\">'key'<\/span>, $arr );\n\n$arr[] = <span class=\"hljs-string\">'new'<\/span>;              <span class=\"hljs-comment\">\/\/ \u8ffd\u52a0<\/span>\narray_push( $arr, <span class=\"hljs-string\">'a'<\/span>, <span class=\"hljs-string\">'b'<\/span> );\narray_pop( $arr );\narray_map( fn( $x ) =&gt; $x * <span class=\"hljs-number\">2<\/span>, [ <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span> ] );\narray_filter( $arr, fn( $x ) =&gt; $x &gt; <span class=\"hljs-number\">0<\/span> );\nin_array( <span class=\"hljs-string\">'apple'<\/span>, $list, <span class=\"hljs-keyword\">true<\/span> ); <span class=\"hljs-comment\">\/\/ \u56b4\u683c\u6a21\u5f0f<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-25\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u89e3\u69cb<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-26\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">[ $first, $second ] = [ <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">20<\/span> ];\n[ <span class=\"hljs-string\">'name'<\/span> =&gt; $name ] = $user;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-26\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">** Spread**<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-27\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$merged = [ ...$a, ...$b ];<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-27\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-6-%e7%ab%a0%ef%bc%9a%e5%ad%97%e4%b8%b2%e8%99%95%e7%90%86\">\u7b2c 6 \u7ae0\uff1a\u5b57\u4e32\u8655\u7406<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-28\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">strlen( $s );\nmb_strlen( $s, <span class=\"hljs-string\">'UTF-8'<\/span> );     <span class=\"hljs-comment\">\/\/ \u4e2d\u6587\u7528\u9019\u500b<\/span>\nstrpos( $haystack, $needle );\nstr_contains( $haystack, <span class=\"hljs-string\">'x'<\/span> ); <span class=\"hljs-comment\">\/\/ PHP 8+<\/span>\nstr_starts_with( $s, <span class=\"hljs-string\">'pre'<\/span> );\nstr_ends_with( $s, <span class=\"hljs-string\">'suf'<\/span> );\nstr_replace( <span class=\"hljs-string\">'old'<\/span>, <span class=\"hljs-string\">'new'<\/span>, $s );\npreg_match( <span class=\"hljs-string\">'\/^\\d+$\/'<\/span>, $s );  <span class=\"hljs-comment\">\/\/ \u6b63\u898f\u8868\u793a\u5f0f<\/span>\ntrim( $s );\nexplode( <span class=\"hljs-string\">','<\/span>, $s );\nimplode( <span class=\"hljs-string\">'-'<\/span>, $arr );\nsprintf( <span class=\"hljs-string\">'%s \u6709 %d \u7b46'<\/span>, $name, $count );\nnumber_format( <span class=\"hljs-number\">12345.6<\/span>, <span class=\"hljs-number\">2<\/span> );  <span class=\"hljs-comment\">\/\/ 1,234.56<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-28\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8f38\u51fa\u8df3\u812b\uff08\u5b89\u5168\u57fa\u790e\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-29\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">echo<\/span> htmlspecialchars( $text, ENT_QUOTES, <span class=\"hljs-string\">'UTF-8'<\/span> );<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-29\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u9632\u6b62 XSS\uff1a\u4efb\u4f55\u4f86\u81ea\u4f7f\u7528\u8005\u6216\u8cc7\u6599\u5eab\u3001\u8981\u986f\u793a\u5728 HTML \u7684\u5b57\u4e32\u90fd\u61c9\u8df3\u812b\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-7-%e7%ab%a0%ef%bc%9a%e8%a1%a8%e5%96%ae%e8%88%87%e8%b6%85%e5%85%a8%e5%9f%9f%e8%ae%8a%e6%95%b8\">\u7b2c 7 \u7ae0\uff1a\u8868\u55ae\u8207\u8d85\u5168\u57df\u8b8a\u6578<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8d85\u5168\u57df\u8b8a\u6578<\/strong><br>\u5728\u4efb\u4f55\u51fd\u5f0f\u5167\u90fd\u53ef\u5b58\u53d6\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u8b8a\u6578<\/th><th>\u5167\u5bb9<\/th><\/tr><\/thead><tbody><tr><td><code>$_GET<\/code><\/td><td>URL \u67e5\u8a62 <code>?page=2<\/code><\/td><\/tr><tr><td><code>$_POST<\/code><\/td><td>POST body<\/td><\/tr><tr><td><code>$_SERVER<\/code><\/td><td>\u8acb\u6c42\u65b9\u6cd5\u3001URI\u3001IP<\/td><\/tr><tr><td><code>$_FILES<\/code><\/td><td>\u4e0a\u50b3\u6a94\u6848<\/td><\/tr><tr><td><code>$_COOKIE<\/code><\/td><td>Cookie<\/td><\/tr><tr><td><code>$_SESSION<\/code><\/td><td>Session\uff08\u9700 <code>session_start()<\/code>\uff09<\/td><\/tr><tr><td><code>$_ENV<\/code><\/td><td>\u74b0\u5883\u8b8a\u6578<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GET \u7bc4\u4f8b<\/strong><br><code>search.php<\/code>\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-30\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$query = <span class=\"hljs-keyword\">isset<\/span>( $_GET[<span class=\"hljs-string\">'q'<\/span>] ) ? trim( $_GET[<span class=\"hljs-string\">'q'<\/span>] ) : <span class=\"hljs-string\">''<\/span>;\n<span class=\"hljs-meta\">?&gt;<\/span><\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">form<\/span> <span class=\"hljs-attr\">method<\/span>=<span class=\"hljs-string\">\"get\"<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">input<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"search\"<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"q\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"&lt;?= htmlspecialchars( $query, ENT_QUOTES, 'UTF-8' ) ?&gt;\"<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"submit\"<\/span>&gt;<\/span>\u641c\u5c0b<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">form<\/span>&gt;<\/span>\n\n<span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span> <span class=\"hljs-keyword\">if<\/span> ( $query !== <span class=\"hljs-string\">''<\/span> ) : <span class=\"hljs-meta\">?&gt;<\/span><\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span>&gt;<\/span>\u4f60\u641c\u5c0b\u4e86\uff1a<span class=\"php\"><span class=\"hljs-meta\">&lt;?<\/span>= htmlspecialchars( $query, ENT_QUOTES, <span class=\"hljs-string\">'UTF-8'<\/span> ) <span class=\"hljs-meta\">?&gt;<\/span><\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n<span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span> <span class=\"hljs-keyword\">endif<\/span>; <span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-30\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>POST \u7bc4\u4f8b<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-31\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$errors = [];\n$name   = <span class=\"hljs-string\">''<\/span>;\n\n<span class=\"hljs-keyword\">if<\/span> ( $_SERVER[<span class=\"hljs-string\">'REQUEST_METHOD'<\/span>] === <span class=\"hljs-string\">'POST'<\/span> ) {\n    $name = trim( $_POST[<span class=\"hljs-string\">'name'<\/span>] ?? <span class=\"hljs-string\">''<\/span> );\n\n    <span class=\"hljs-keyword\">if<\/span> ( $name === <span class=\"hljs-string\">''<\/span> ) {\n        $errors[] = <span class=\"hljs-string\">'\u59d3\u540d\u4e0d\u53ef\u7a7a\u767d'<\/span>;\n    }\n\n    <span class=\"hljs-keyword\">if<\/span> ( ! $errors ) {\n        <span class=\"hljs-comment\">\/\/ \u5beb\u5165\u8cc7\u6599\u5eab\u6216\u8655\u7406\u908f\u8f2f<\/span>\n        header( <span class=\"hljs-string\">'Location: \/success.php'<\/span> );\n        <span class=\"hljs-keyword\">exit<\/span>;\n    }\n}\n<span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-31\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u91cd\u5c0e\u5411\u5f8c <code>exit<\/code><\/strong> \u5f88\u91cd\u8981\uff0c\u907f\u514d\u7e7c\u7e8c\u57f7\u884c\u4e0b\u65b9\u7a0b\u5f0f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>$_SERVER<\/code> \u5e38\u7528\u9375<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-32\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$_SERVER[<span class=\"hljs-string\">'REQUEST_METHOD'<\/span>]; <span class=\"hljs-comment\">\/\/ GET \/ POST<\/span>\n$_SERVER[<span class=\"hljs-string\">'REQUEST_URI'<\/span>];    <span class=\"hljs-comment\">\/\/ \/path?query=1<\/span>\n$_SERVER[<span class=\"hljs-string\">'HTTP_HOST'<\/span>];\n$_SERVER[<span class=\"hljs-string\">'REMOTE_ADDR'<\/span>];    <span class=\"hljs-comment\">\/\/ \u5ba2\u6236\u7aef IP\uff08\u53ef\u88ab proxy \u5f71\u97ff\uff09<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-32\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-8-%e7%ab%a0%ef%bc%9asession%e3%80%81cookie-%e8%88%87%e7%8b%80%e6%85%8b\">\u7b2c 8 \u7ae0\uff1aSession\u3001Cookie \u8207\u72c0\u614b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP \u672c\u8eab\u662f<strong>\u7121\u72c0\u614b<\/strong>\u7684\uff1b\u8981\u8a18\u4f4f\u300c\u5df2\u767b\u5165\u300d\u9700 Session \u6216 Cookie\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Session<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-33\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\nsession_start();\n\n$_SESSION[<span class=\"hljs-string\">'user_id'<\/span>] = <span class=\"hljs-number\">42<\/span>;\n$_SESSION[<span class=\"hljs-string\">'username'<\/span>] = <span class=\"hljs-string\">'alice'<\/span>;\n\n<span class=\"hljs-comment\">\/\/ \u8b80\u53d6<\/span>\n$user_id = $_SESSION[<span class=\"hljs-string\">'user_id'<\/span>] ?? <span class=\"hljs-keyword\">null<\/span>;\n\n<span class=\"hljs-comment\">\/\/ \u767b\u51fa<\/span>\nsession_destroy();<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-33\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u6d41\u7a0b\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-34\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">sequenceDiagram\n  participant B <span class=\"hljs-keyword\">as<\/span> \u700f\u89bd\u5668\n  participant S <span class=\"hljs-keyword\">as<\/span> PHP \u4f3a\u670d\u5668\n\n  B-&gt;&gt;S: POST \/login\uff08\u5e33\u5bc6\uff09\n  S-&gt;&gt;S: \u9a57\u8b49\u6210\u529f\uff0csession_start()\n  S-&gt;&gt;S: $_SESSION[<span class=\"hljs-string\">'user_id'<\/span>] = <span class=\"hljs-number\">1<\/span>\n  S-&gt;&gt;B: <span class=\"hljs-built_in\">Set<\/span>-Cookie: PHPSESSID=abc123\n  B-&gt;&gt;S: GET \/dashboard\uff08\u5e36 Cookie\uff09\n  S-&gt;&gt;S: \u4f9d PHPSESSID \u8b80\u53d6 Session\n  S-&gt;&gt;B: \u5df2\u767b\u5165\u9801\u9762<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-34\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>Cookie<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-35\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">setcookie( <span class=\"hljs-string\">'theme'<\/span>, <span class=\"hljs-string\">'dark'<\/span>, [\n    <span class=\"hljs-string\">'expires'<\/span>  =&gt; time() + <span class=\"hljs-number\">86400<\/span> * <span class=\"hljs-number\">30<\/span>,\n    <span class=\"hljs-string\">'path'<\/span>     =&gt; <span class=\"hljs-string\">'\/'<\/span>,\n    <span class=\"hljs-string\">'httponly'<\/span> =&gt; <span class=\"hljs-keyword\">true<\/span>,\n    <span class=\"hljs-string\">'samesite'<\/span> =&gt; <span class=\"hljs-string\">'Lax'<\/span>,\n] );\n\n$theme = $_COOKIE[<span class=\"hljs-string\">'theme'<\/span>] ?? <span class=\"hljs-string\">'light'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-35\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u654f\u611f\u8cc7\u6599\uff08\u5982\u5bc6\u78bc\uff09\u4e0d\u8981\u653e Cookie \u660e\u6587\uff1bSession ID \u900f\u904e Cookie \u50b3\u5373\u53ef\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-9-%e7%ab%a0%ef%bc%9a%e6%aa%94%e6%a1%88%e3%80%81%e8%b7%af%e5%be%91%e8%88%87%e5%bc%95%e5%85%a5\">\u7b2c 9 \u7ae0\uff1a\u6a94\u6848\u3001\u8def\u5f91\u8207\u5f15\u5165<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>include \/ require<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-36\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">require_once<\/span> <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/config.php'<\/span>;\n<span class=\"hljs-keyword\">include<\/span> <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/partials\/header.php'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-36\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u8a9e\u6cd5<\/th><th>\u627e\u4e0d\u5230\u6a94\u6848\u6642<\/th><\/tr><\/thead><tbody><tr><td><code>include<\/code><\/td><td>Warning\uff0c\u7e7c\u7e8c<\/td><\/tr><tr><td><code>require<\/code><\/td><td>Fatal\uff0c\u505c\u6b62<\/td><\/tr><tr><td><code>*_once<\/code><\/td><td>\u53ea\u8f09\u5165\u4e00\u6b21<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><code>__DIR__<\/code> \u662f<strong>\u76ee\u524d\u6a94\u6848\u6240\u5728\u76ee\u9304<\/strong>\u7684\u7d55\u5c0d\u8def\u5f91\uff0c\u6bd4\u76f8\u5c0d\u8def\u5f91\u53ef\u9760\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8b80\u5beb\u6a94\u6848<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-37\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$content = file_get_contents( <span class=\"hljs-string\">'data.txt'<\/span> );\nfile_put_contents( <span class=\"hljs-string\">'log.txt'<\/span>, $line, FILE_APPEND );\n\n$handle = fopen( <span class=\"hljs-string\">'big.csv'<\/span>, <span class=\"hljs-string\">'r'<\/span> );\n<span class=\"hljs-keyword\">while<\/span> ( ( $row = fgetcsv( $handle ) ) !== <span class=\"hljs-keyword\">false<\/span> ) {\n    <span class=\"hljs-comment\">\/\/ \u8655\u7406\u6bcf\u4e00\u884c<\/span>\n}\nfclose( $handle );<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-37\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>JSON \u6a94\u7576\u7c21\u6613\u8cc7\u6599\u5eab<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-38\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$data = json_decode( file_get_contents( <span class=\"hljs-string\">'users.json'<\/span> ), <span class=\"hljs-keyword\">true<\/span> );\nfile_put_contents( <span class=\"hljs-string\">'users.json'<\/span>, json_encode( $data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE ) );<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-38\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-10-%e7%ab%a0%ef%bc%9a%e7%89%a9%e4%bb%b6%e5%b0%8e%e5%90%91-php\">\u7b2c 10 \u7ae0\uff1a\u7269\u4ef6\u5c0e\u5411 PHP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u985e\u5225\u8207\u7269\u4ef6<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-39\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">User<\/span> <\/span>{\n    <span class=\"hljs-keyword\">public<\/span> int $id;\n    <span class=\"hljs-keyword\">public<\/span> string $name;\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">__construct<\/span><span class=\"hljs-params\">( int $id, string $name )<\/span> <\/span>{\n        <span class=\"hljs-keyword\">$this<\/span>-&gt;id   = $id;\n        <span class=\"hljs-keyword\">$this<\/span>-&gt;name = $name;\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">greet<\/span><span class=\"hljs-params\">()<\/span>: <span class=\"hljs-title\">string<\/span> <\/span>{\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-string\">'Hi, '<\/span> . <span class=\"hljs-keyword\">$this<\/span>-&gt;name;\n    }\n}\n\n$user = <span class=\"hljs-keyword\">new<\/span> User( <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-string\">'Alice'<\/span> );\n<span class=\"hljs-keyword\">echo<\/span> $user-&gt;greet();<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-39\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u53ef\u898b\u6027<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u4fee\u98fe\u7b26<\/th><th>\u5b58\u53d6\u7bc4\u570d<\/th><\/tr><\/thead><tbody><tr><td><code>public<\/code><\/td><td>\u5230\u8655\u53ef\u7528<\/td><\/tr><tr><td><code>protected<\/code><\/td><td>\u985e\u5225\u5167\u8207\u5b50\u985e\u5225<\/td><\/tr><tr><td><code>private<\/code><\/td><td>\u50c5\u985e\u5225\u5167<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5efa\u69cb\u5b50\u5c6c\u6027\u63d0\u5347\uff08PHP 8+\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-40\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Product<\/span> <\/span>{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">__construct<\/span><span class=\"hljs-params\">(\n        public string $name,\n        public float $price,\n    )<\/span> <\/span>{}\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-40\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u7e7c\u627f\u8207\u4ecb\u9762<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-41\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">Notifiable<\/span> <\/span>{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">notify<\/span><span class=\"hljs-params\">( string $message )<\/span>: <span class=\"hljs-title\">void<\/span><\/span>;\n}\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">EmailNotifier<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">Notifiable<\/span> <\/span>{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">notify<\/span><span class=\"hljs-params\">( string $message )<\/span>: <span class=\"hljs-title\">void<\/span> <\/span>{\n        mail( <span class=\"hljs-string\">'user@example.com'<\/span>, <span class=\"hljs-string\">'Notice'<\/span>, $message );\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-41\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u975c\u614b\u3001\u5e38\u6578\u3001\u5217\u8209<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-42\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MathUtil<\/span> <\/span>{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">const<\/span> PI = <span class=\"hljs-number\">3.14159<\/span>;\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">add<\/span><span class=\"hljs-params\">( int $a, int $b )<\/span>: <span class=\"hljs-title\">int<\/span> <\/span>{\n        <span class=\"hljs-keyword\">return<\/span> $a + $b;\n    }\n}\n\nenum Status: string {\n    <span class=\"hljs-keyword\">case<\/span> Draft = <span class=\"hljs-string\">'draft'<\/span>;\n    <span class=\"hljs-keyword\">case<\/span> Published = <span class=\"hljs-string\">'published'<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-42\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u9b54\u8853\u65b9\u6cd5<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-43\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">__toString<\/span><span class=\"hljs-params\">()<\/span>: <span class=\"hljs-title\">string<\/span> <\/span>{ <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">$this<\/span>-&gt;name; }\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">__get<\/span><span class=\"hljs-params\">( string $key )<\/span> <\/span>{ <span class=\"hljs-comment\">\/* ... *\/<\/span> }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-43\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-11-%e7%ab%a0%ef%bc%9a%e5%91%bd%e5%90%8d%e7%a9%ba%e9%96%93%e3%80%81composer-%e8%88%87%e8%87%aa%e5%8b%95%e8%bc%89%e5%85%a5\">\u7b2c 11 \u7ae0\uff1a\u547d\u540d\u7a7a\u9593\u3001Composer \u8207\u81ea\u52d5\u8f09\u5165<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u547d\u540d\u7a7a\u9593<\/strong><br>\u907f\u514d\u985e\u5225\u540d\u7a31\u885d\u7a81\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-44\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Models<\/span>;\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">User<\/span> <\/span>{\n    <span class=\"hljs-comment\">\/\/ ...<\/span>\n}<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-44\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-45\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Controllers<\/span>;\n\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Models<\/span>\\<span class=\"hljs-title\">User<\/span>;\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">UserController<\/span> <\/span>{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">show<\/span><span class=\"hljs-params\">( int $id )<\/span>: <span class=\"hljs-title\">void<\/span> <\/span>{\n        $user = <span class=\"hljs-keyword\">new<\/span> User( $id, <span class=\"hljs-string\">'Bob'<\/span> );\n    }\n}<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-45\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>Composer<\/strong><br>PHP \u7684\u5957\u4ef6\u7ba1\u7406\u5668\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-46\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">composer init\ncomposer <span class=\"hljs-built_in\">require<\/span> monolog\/monolog<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-46\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><code>composer.json<\/code>\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-47\" data-shcb-language-name=\"JSON \/ JSON with Comments\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json\">{\n  <span class=\"hljs-attr\">\"autoload\"<\/span>: {\n    <span class=\"hljs-attr\">\"psr-4\"<\/span>: {\n      <span class=\"hljs-attr\">\"App\\\\\"<\/span>: <span class=\"hljs-string\">\"src\/\"<\/span>\n    }\n  }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-47\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON with Comments<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">composer dump-autoload<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u5165\u53e3\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-48\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/vendor\/autoload.php'<\/span>;\n\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Models<\/span>\\<span class=\"hljs-title\">User<\/span>;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-48\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>PSR \u6a19\u6e96\uff08\u4e86\u89e3\u5373\u53ef\uff09<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>PSR-4<\/strong>\uff1a\u81ea\u52d5\u8f09\u5165\u76ee\u9304\u5c0d\u61c9<\/li>\n\n\n\n<li><strong>PSR-12<\/strong>\uff1a\u7a0b\u5f0f\u78bc\u98a8\u683c<\/li>\n\n\n\n<li>\u73fe\u4ee3 PHP \u5c08\u6848\u5e7e\u4e4e\u90fd\u7528 Composer + \u547d\u540d\u7a7a\u9593<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-12-%e7%ab%a0%ef%bc%9a%e8%b3%87%e6%96%99%e5%ba%ab%e8%88%87-pdo\">\u7b2c 12 \u7ae0\uff1a\u8cc7\u6599\u5eab\u8207 PDO<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u95dc\u806f\u5f0f\u8cc7\u6599\u5eab\u6982\u5ff5<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9019\u88e1\u7c21\u55ae\u8aaa\u660e\u4e00\u4e0b\u8cc7\u6599\u5eab\u5b78\u7fd2\u4e2d\u5e38\u898b\u7684\u5e7e\u500b\u8a5e\u5f59\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u540d\u8a5e<\/th><th>\u8aaa\u660e<\/th><\/tr><\/thead><tbody><tr><td>\u8cc7\u6599\u8868 Table<\/td><td>\u5982 <code>users<\/code>\u3001<code>posts<\/code><\/td><\/tr><tr><td>\u5217 Row<\/td><td>\u4e00\u7b46\u8a18\u9304<\/td><\/tr><tr><td>\u6b04 Column<\/td><td>\u6b04\u4f4d\u5982 <code>id<\/code>\u3001<code>email<\/code><\/td><\/tr><tr><td>\u4e3b\u9375 Primary Key<\/td><td>\u552f\u4e00\u8b58\u5225\uff0c\u5e38\u70ba <code>id<\/code><\/td><\/tr><tr><td>\u5916\u9375 Foreign Key<\/td><td>\u95dc\u806f\u53e6\u4e00\u5f35\u8868<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5efa\u7acb\u9023\u7dda\uff08PDO\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-49\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n$dsn = <span class=\"hljs-string\">'mysql:host=127.0.0.1;dbname=app;charset=utf8mb4'<\/span>;\n$user = <span class=\"hljs-string\">'root'<\/span>;\n$pass = <span class=\"hljs-string\">''<\/span>;\n\n$pdo = <span class=\"hljs-keyword\">new<\/span> PDO( $dsn, $user, $pass, [\n    PDO::ATTR_ERRMODE            =&gt; PDO::ERRMODE_EXCEPTION,\n    PDO::ATTR_DEFAULT_FETCH_MODE =&gt; PDO::FETCH_ASSOC,\n] );<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-49\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u67e5\u8a62\uff08Prepared Statement\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-50\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ \u8b80\u53d6<\/span>\n$stmt = $pdo-&gt;prepare( <span class=\"hljs-string\">'SELECT * FROM users WHERE id = :id'<\/span> );\n$stmt-&gt;execute( [ <span class=\"hljs-string\">'id'<\/span> =&gt; $user_id ] );\n$row = $stmt-&gt;fetch();\n\n<span class=\"hljs-comment\">\/\/ \u5217\u8868<\/span>\n$stmt = $pdo-&gt;query( <span class=\"hljs-string\">'SELECT id, name FROM users ORDER BY id DESC'<\/span> );\n$users = $stmt-&gt;fetchAll();\n\n<span class=\"hljs-comment\">\/\/ \u65b0\u589e<\/span>\n$stmt = $pdo-&gt;prepare( <span class=\"hljs-string\">'INSERT INTO users (name, email) VALUES (:name, :email)'<\/span> );\n$stmt-&gt;execute( [\n    <span class=\"hljs-string\">'name'<\/span>  =&gt; $name,\n    <span class=\"hljs-string\">'email'<\/span> =&gt; $email,\n] );\n$new_id = $pdo-&gt;lastInsertId();\n\n<span class=\"hljs-comment\">\/\/ \u66f4\u65b0<\/span>\n$stmt = $pdo-&gt;prepare( <span class=\"hljs-string\">'UPDATE users SET name = :name WHERE id = :id'<\/span> );\n$stmt-&gt;execute( [ <span class=\"hljs-string\">'name'<\/span> =&gt; $name, <span class=\"hljs-string\">'id'<\/span> =&gt; $id ] );\n\n<span class=\"hljs-comment\">\/\/ \u522a\u9664<\/span>\n$stmt = $pdo-&gt;prepare( <span class=\"hljs-string\">'DELETE FROM users WHERE id = :id'<\/span> );\n$stmt-&gt;execute( [ <span class=\"hljs-string\">'id'<\/span> =&gt; $id ] );<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-50\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6c38\u9060\u7528\u4f54\u4f4d\u7b26<\/strong>\uff0c\u4e0d\u8981\u62fc\u63a5\u4f7f\u7528\u8005\u8f38\u5165\u9032 SQL \u5b57\u4e32\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4ea4\u6613 Transaction<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-51\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$pdo-&gt;beginTransaction();\n<span class=\"hljs-keyword\">try<\/span> {\n    $pdo-&gt;prepare( <span class=\"hljs-string\">'UPDATE accounts SET balance = balance - :amt WHERE id = 1'<\/span> )\n        -&gt;execute( [ <span class=\"hljs-string\">'amt'<\/span> =&gt; <span class=\"hljs-number\">100<\/span> ] );\n    $pdo-&gt;prepare( <span class=\"hljs-string\">'UPDATE accounts SET balance = balance + :amt WHERE id = 2'<\/span> )\n        -&gt;execute( [ <span class=\"hljs-string\">'amt'<\/span> =&gt; <span class=\"hljs-number\">100<\/span> ] );\n    $pdo-&gt;commit();\n} <span class=\"hljs-keyword\">catch<\/span> ( <span class=\"hljs-keyword\">Exception<\/span> $e ) {\n    $pdo-&gt;rollBack();\n    <span class=\"hljs-keyword\">throw<\/span> $e;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-51\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u7c21\u6613 Repository \u6a21\u5f0f<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-52\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">UserRepository<\/span> <\/span>{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">__construct<\/span><span class=\"hljs-params\">( private PDO $pdo )<\/span> <\/span>{}\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">find<\/span><span class=\"hljs-params\">( int $id )<\/span>: ?<span class=\"hljs-title\">array<\/span> <\/span>{\n        $stmt = <span class=\"hljs-keyword\">$this<\/span>-&gt;pdo-&gt;prepare( <span class=\"hljs-string\">'SELECT * FROM users WHERE id = :id'<\/span> );\n        $stmt-&gt;execute( [ <span class=\"hljs-string\">'id'<\/span> =&gt; $id ] );\n        $row = $stmt-&gt;fetch();\n        <span class=\"hljs-keyword\">return<\/span> $row ?: <span class=\"hljs-keyword\">null<\/span>;\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-52\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-13-%e7%ab%a0%ef%bc%9a%e9%8c%af%e8%aa%a4%e8%99%95%e7%90%86%e8%88%87%e9%99%a4%e9%8c%af\">\u7b2c 13 \u7ae0\uff1a\u932f\u8aa4\u8655\u7406\u8207\u9664\u932f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u932f\u8aa4\u7b49\u7d1a<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7b49\u7d1a<\/th><th>\u8aaa\u660e<\/th><\/tr><\/thead><tbody><tr><td>Notice<\/td><td>\u53ef\u7591\u4f46\u4e0d\u81f4\u547d<\/td><\/tr><tr><td>Warning<\/td><td>\u6709\u554f\u984c\u4f46\u7e7c\u7e8c<\/td><\/tr><tr><td>Fatal Error<\/td><td>\u7a0b\u5f0f\u505c\u6b62<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u958b\u767c\u74b0\u5883\u8a2d\u5b9a<\/strong><br><code>php.ini<\/code> \u6216\u7a0b\u5f0f\u958b\u982d\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-53\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">ini_set( <span class=\"hljs-string\">'display_errors'<\/span>, <span class=\"hljs-string\">'1'<\/span> );\nini_set( <span class=\"hljs-string\">'display_startup_errors'<\/span>, <span class=\"hljs-string\">'1'<\/span> );\nerror_reporting( E_ALL );<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-53\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u6b63\u5f0f\u74b0\u5883\u61c9\u95dc\u9589 <code>display_errors<\/code>\uff0c\u6539\u5beb log\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4f8b\u5916 Exception<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-54\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">try<\/span> {\n    <span class=\"hljs-keyword\">if<\/span> ( $age &lt; <span class=\"hljs-number\">0<\/span> ) {\n        <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> InvalidArgumentException( <span class=\"hljs-string\">'\u5e74\u9f61\u4e0d\u53ef\u70ba\u8ca0'<\/span> );\n    }\n    $result = risky_operation();\n} <span class=\"hljs-keyword\">catch<\/span> ( InvalidArgumentException $e ) {\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'\u53c3\u6578\u932f\u8aa4\uff1a'<\/span> . $e-&gt;getMessage();\n} <span class=\"hljs-keyword\">catch<\/span> ( Throwable $e ) {\n    error_log( $e-&gt;getMessage() );\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'\u7cfb\u7d71\u5fd9\u788c\u4e2d'<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-54\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u9664\u932f\u6280\u5de7<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-55\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">error_log( print_r( $data, <span class=\"hljs-keyword\">true<\/span> ) );\nvar_dump( $var );   <span class=\"hljs-comment\">\/\/ \u50c5\u958b\u767c\u7528<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-55\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>Xdebug<\/strong>\uff1a\u65b7\u9ede\u9664\u932f\u3001\u5806\u758a\u8ffd\u8e64\uff0cPhpStorm \/ VS Code \u53ef\u9023\u63a5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5e38\u898b\u932f\u8aa4<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u8a0a\u606f<\/th><th>\u5e38\u898b\u539f\u56e0<\/th><\/tr><\/thead><tbody><tr><td><code>Parse error: syntax error<\/code><\/td><td>\u5c11\u5206\u865f\u3001\u62ec\u865f\u4e0d\u914d\u5c0d<\/td><\/tr><tr><td><code>Undefined variable<\/code><\/td><td>\u8b8a\u6578\u672a\u8ce6\u503c<\/td><\/tr><tr><td><code>Call to undefined function<\/code><\/td><td>\u51fd\u5f0f\u540d\u6253\u932f\u6216\u672a\u5f15\u5165<\/td><\/tr><tr><td><code>Class not found<\/code><\/td><td>\u547d\u540d\u7a7a\u9593\u6216 autoload \u554f\u984c<\/td><\/tr><tr><td>\u767d\u756b\u9762<\/td><td>Fatal Error + \u95dc\u9589 display_errors<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-14-%e7%ab%a0%ef%bc%9a%e5%ae%89%e5%85%a8%e5%af%a6%e5%8b%99\">\u7b2c 14 \u7ae0\uff1a\u5b89\u5168\u5be6\u52d9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. \u8df3\u812b\u8f38\u51fa\uff08XSS \u9632\u8b77\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-56\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">e<\/span><span class=\"hljs-params\">( string $value )<\/span>: <span class=\"hljs-title\">string<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> htmlspecialchars( $value, ENT_QUOTES, <span class=\"hljs-string\">'UTF-8'<\/span> );\n}\n\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;p&gt;'<\/span> . e( $user_input ) . <span class=\"hljs-string\">'&lt;\/p&gt;'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-56\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>2. \u9810\u8655\u7406\u8a9e\u53e5\uff08SQL Injection \u9632\u8b77\uff09<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-57\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ \u5371\u96aa\uff1a\u7d55\u5c0d\u4e0d\u8981\u9019\u6a23<\/span>\n<span class=\"hljs-comment\">\/\/ \"SELECT * FROM users WHERE id = {$_GET['id']}\";<\/span>\n\n$stmt = $pdo-&gt;prepare( <span class=\"hljs-string\">'SELECT * FROM users WHERE id = :id'<\/span> );\n$stmt-&gt;execute( [ <span class=\"hljs-string\">'id'<\/span> =&gt; (int) $_GET[<span class=\"hljs-string\">'id'<\/span>] ] );<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-57\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>3. CSRF Token<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-58\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">session_start();\n\n<span class=\"hljs-keyword\">if<\/span> ( <span class=\"hljs-keyword\">empty<\/span>( $_SESSION[<span class=\"hljs-string\">'csrf'<\/span>] ) ) {\n    $_SESSION[<span class=\"hljs-string\">'csrf'<\/span>] = bin2hex( random_bytes( <span class=\"hljs-number\">32<\/span> ) );\n}\n\n<span class=\"hljs-comment\">\/\/ \u8868\u55ae\u5167<\/span>\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;input type=\"hidden\" name=\"csrf\" value=\"'<\/span> . e( $_SESSION[<span class=\"hljs-string\">'csrf'<\/span>] ) . <span class=\"hljs-string\">'\"&gt;'<\/span>;\n\n<span class=\"hljs-comment\">\/\/ \u9a57\u8b49 POST<\/span>\n<span class=\"hljs-keyword\">if<\/span> ( ! hash_equals( $_SESSION[<span class=\"hljs-string\">'csrf'<\/span>], $_POST[<span class=\"hljs-string\">'csrf'<\/span>] ?? <span class=\"hljs-string\">''<\/span> ) ) {\n    http_response_code( <span class=\"hljs-number\">403<\/span> );\n    <span class=\"hljs-keyword\">exit<\/span>( <span class=\"hljs-string\">'Invalid CSRF token'<\/span> );\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-58\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>4. \u5bc6\u78bc\u96dc\u6e4a<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-59\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$hash = password_hash( $password, PASSWORD_DEFAULT );\n\n<span class=\"hljs-keyword\">if<\/span> ( password_verify( $input_password, $hash ) ) {\n    <span class=\"hljs-comment\">\/\/ \u767b\u5165\u6210\u529f<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-59\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u7d55\u4e0d<\/strong>\u7528 MD5\/SHA1 \u5b58\u5bc6\u78bc\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5. \u6a94\u6848\u4e0a\u50b3<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6aa2\u67e5\u526f\u6a94\u540d\u8207 MIME<\/li>\n\n\n\n<li>\u91cd\u65b0\u547d\u540d\u6a94\u6848\uff0c\u4e0d\u8981\u4fe1\u4efb\u4f7f\u7528\u8005\u6a94\u540d<\/li>\n\n\n\n<li>\u5b58\u5230 Web \u6839\u76ee\u9304\u5916\uff0c\u6216\u7981\u6b62\u57f7\u884c<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>6. \u6700\u5c0f\u6b0a\u9650<\/strong><br>\u8cc7\u6599\u5eab\u5e33\u865f\u53ea\u7d66\u5fc5\u8981\u6b0a\u9650\uff1b\u6b63\u5f0f\u74b0\u5883\u95dc\u9589\u591a\u9918 PHP \u51fd\u5f0f\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-15-%e7%ab%a0%ef%bc%9ahttp%e3%80%81%e8%b7%af%e7%94%b1%e8%88%87-mvc-%e6%a6%82%e5%bf%b5\">\u7b2c 15 \u7ae0\uff1aHTTP\u3001\u8def\u7531\u8207 MVC \u6982\u5ff5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>HTTP \u65b9\u6cd5<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u65b9\u6cd5<\/th><th>\u7528\u9014<\/th><th>\u7bc4\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>GET<\/td><td>\u8b80\u53d6<\/td><td>\u5217\u8868\u3001\u8a73\u60c5\u9801<\/td><\/tr><tr><td>POST<\/td><td>\u5efa\u7acb \/ \u63d0\u4ea4\u8868\u55ae<\/td><td>\u8a3b\u518a\u3001\u767b\u5165<\/td><\/tr><tr><td>PUT\/PATCH<\/td><td>\u66f4\u65b0<\/td><td>REST API<\/td><\/tr><tr><td>DELETE<\/td><td>\u522a\u9664<\/td><td>REST API<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u72c0\u614b\u78bc<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u78bc<\/th><th>\u610f\u7fa9<\/th><\/tr><\/thead><tbody><tr><td>200<\/td><td>\u6210\u529f<\/td><\/tr><tr><td>302<\/td><td>\u91cd\u5c0e\u5411<\/td><\/tr><tr><td>400<\/td><td>\u5ba2\u6236\u7aef\u932f\u8aa4<\/td><\/tr><tr><td>401<\/td><td>\u672a\u6388\u6b0a<\/td><\/tr><tr><td>403<\/td><td>\u7981\u6b62<\/td><\/tr><tr><td>404<\/td><td>\u627e\u4e0d\u5230<\/td><\/tr><tr><td>500<\/td><td>\u4f3a\u670d\u5668\u932f\u8aa4<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-60\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">http_response_code( <span class=\"hljs-number\">404<\/span> );\nheader( <span class=\"hljs-string\">'Location: \/login'<\/span> );\nheader( <span class=\"hljs-string\">'Content-Type: application\/json; charset=utf-8'<\/span> );<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-60\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6975\u7c21\u8def\u7531\uff08\u55ae\u6a94\u793a\u7bc4\uff09<\/strong><br><code>public\/index.php<\/code>\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-61\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/..\/vendor\/autoload.php'<\/span>;\n\n$uri    = parse_url( $_SERVER[<span class=\"hljs-string\">'REQUEST_URI'<\/span>], PHP_URL_PATH );\n$method = $_SERVER[<span class=\"hljs-string\">'REQUEST_METHOD'<\/span>];\n\nmatch ( [ $method, $uri ] ) {\n    [ <span class=\"hljs-string\">'GET'<\/span>, <span class=\"hljs-string\">'\/'<\/span> ]       =&gt; ( fn() =&gt; <span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-string\">'..\/views\/home.php'<\/span> )(),\n    [ <span class=\"hljs-string\">'GET'<\/span>, <span class=\"hljs-string\">'\/users'<\/span> ]  =&gt; ( fn() =&gt; ( <span class=\"hljs-keyword\">new<\/span> UserController() )-&gt;index() )(),\n    [ <span class=\"hljs-string\">'POST'<\/span>, <span class=\"hljs-string\">'\/login'<\/span> ] =&gt; ( fn() =&gt; ( <span class=\"hljs-keyword\">new<\/span> AuthController() )-&gt;login() )(),\n    <span class=\"hljs-keyword\">default<\/span>              =&gt; ( <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">()<\/span> <\/span>{\n        http_response_code( <span class=\"hljs-number\">404<\/span> );\n        <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'Not Found'<\/span>;\n    } )(),\n};<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-61\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>MVC \u5206\u5de5<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-62\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">flowchart<\/span> <span class=\"hljs-selector-tag\">LR<\/span>\n  <span class=\"hljs-selector-tag\">R<\/span><span class=\"hljs-selector-attr\">[Router \u8def\u7531]<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">C<\/span><span class=\"hljs-selector-attr\">[Controller \u63a7\u5236\u5668]<\/span>\n  <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">M<\/span><span class=\"hljs-selector-attr\">[Model \u6a21\u578b \/ \u8cc7\u6599\u5eab]<\/span>\n  <span class=\"hljs-selector-tag\">C<\/span> <span class=\"hljs-selector-tag\">--<\/span>&gt; <span class=\"hljs-selector-tag\">V<\/span><span class=\"hljs-selector-attr\">[View \u8996\u5716 \/ HTML]<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-62\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u5c64<\/th><th>\u8077\u8cac<\/th><\/tr><\/thead><tbody><tr><td>Model<\/td><td>\u8cc7\u6599\u8207\u5546\u696d\u898f\u5247<\/td><\/tr><tr><td>View<\/td><td>\u5448\u73fe HTML<\/td><\/tr><tr><td>Controller<\/td><td>\u63a5\u6536\u8acb\u6c42\u3001\u547c\u53eb Model\u3001\u9078 View<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u6846\u67b6\uff08Laravel\u3001Symfony\uff09\u5e6b\u4f60\u8655\u7406\u8def\u7531\u3001ORM\u3001\u6a23\u677f\uff1b\u5e95\u5c64\u4ecd\u662f PHP\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-16-%e7%ab%a0%ef%bc%9ajson-api-%e8%88%87%e5%89%8d%e5%be%8c%e7%ab%af%e5%88%86%e9%9b%a2\">\u7b2c 16 \u7ae0\uff1aJSON API \u8207\u524d\u5f8c\u7aef\u5206\u96e2<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8f38\u51fa JSON<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-63\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\nheader( <span class=\"hljs-string\">'Content-Type: application\/json; charset=utf-8'<\/span> );\n\n$data = [\n    <span class=\"hljs-string\">'ok'<\/span>    =&gt; <span class=\"hljs-keyword\">true<\/span>,\n    <span class=\"hljs-string\">'items'<\/span> =&gt; [\n        [ <span class=\"hljs-string\">'id'<\/span> =&gt; <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-string\">'title'<\/span> =&gt; <span class=\"hljs-string\">'\u7b2c\u4e00\u5247'<\/span> ],\n        [ <span class=\"hljs-string\">'id'<\/span> =&gt; <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-string\">'title'<\/span> =&gt; <span class=\"hljs-string\">'\u7b2c\u4e8c\u5247'<\/span> ],\n    ],\n];\n\n<span class=\"hljs-keyword\">echo<\/span> json_encode( $data, JSON_UNESCAPED_UNICODE );<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-63\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8b80\u53d6 JSON body<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-64\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$raw  = file_get_contents( <span class=\"hljs-string\">'php:\/\/input'<\/span> );\n$body = json_decode( $raw, <span class=\"hljs-keyword\">true<\/span> );\n\n<span class=\"hljs-keyword\">if<\/span> ( ! is_array( $body ) ) {\n    http_response_code( <span class=\"hljs-number\">400<\/span> );\n    <span class=\"hljs-keyword\">echo<\/span> json_encode( [ <span class=\"hljs-string\">'error'<\/span> =&gt; <span class=\"hljs-string\">'Invalid JSON'<\/span> ] );\n    <span class=\"hljs-keyword\">exit<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-64\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>REST \u98a8\u683c CRUD<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u65b9\u6cd5<\/th><th>\u8def\u5f91<\/th><th>\u52d5\u4f5c<\/th><\/tr><\/thead><tbody><tr><td>GET<\/td><td><code>\/api\/todos<\/code><\/td><td>\u5217\u8868<\/td><\/tr><tr><td>GET<\/td><td><code>\/api\/todos\/1<\/code><\/td><td>\u55ae\u7b46<\/td><\/tr><tr><td>POST<\/td><td><code>\/api\/todos<\/code><\/td><td>\u65b0\u589e<\/td><\/tr><tr><td>PUT<\/td><td><code>\/api\/todos\/1<\/code><\/td><td>\u66f4\u65b0<\/td><\/tr><tr><td>DELETE<\/td><td><code>\/api\/todos\/1<\/code><\/td><td>\u522a\u9664<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u524d\u7aef React\/Vue \u7528 <code>fetch()<\/code> \u547c\u53eb\u9019\u4e9b\u7aef\u9ede\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%ac%ac-17-%e7%ab%a0%ef%bc%9a%e5%af%a6%e6%88%b0%e8%bf%b7%e4%bd%a0%e5%b0%88%e6%a1%88%ef%bc%9a%e5%be%85%e8%be%a6%e6%b8%85%e5%96%ae\">\u7b2c 17 \u7ae0\uff1a\u5be6\u6230\u8ff7\u4f60\u5c08\u6848\uff1a\u5f85\u8fa6\u6e05\u55ae<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6574\u5408\u6240\u5b78\uff1a\u8868\u55ae\u3001PDO\u3001Session\u3001\u8df3\u812b\u8f38\u51fa\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8cc7\u6599\u8868<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-65\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">CREATE TABLE todos (\nid INT AUTO_INCREMENT PRIMARY KEY,\ntitle VARCHAR(<span class=\"hljs-number\">255<\/span>) NOT <span class=\"hljs-keyword\">NULL<\/span>,\ndone TINYINT(<span class=\"hljs-number\">1<\/span>) NOT <span class=\"hljs-keyword\">NULL<\/span> <span class=\"hljs-keyword\">DEFAULT<\/span> <span class=\"hljs-number\">0<\/span>,\ncreated_at TIMESTAMP <span class=\"hljs-keyword\">DEFAULT<\/span> CURRENT_TIMESTAMP\n);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-65\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u529f\u80fd\u6e05\u55ae<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-66\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-number\">1.<\/span> <span class=\"hljs-string\">`GET \/`<\/span> \u986f\u793a\u6240\u6709\u5f85\u8fa6\n<span class=\"hljs-number\">2.<\/span> <span class=\"hljs-string\">`POST \/add`<\/span> \u65b0\u589e\uff08CSRF + \u9a57\u8b49\uff09\n<span class=\"hljs-number\">3.<\/span> <span class=\"hljs-string\">`POST \/toggle`<\/span> \u5207\u63db\u5b8c\u6210\u72c0\u614b\n<span class=\"hljs-number\">4.<\/span> <span class=\"hljs-string\">`POST \/delete`<\/span> \u522a\u9664\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-66\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u76ee\u9304\u5efa\u8b70<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-67\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">todo-app\/\n<span class=\"hljs-keyword\">public<\/span>\/\nindex.php <span class=\"hljs-comment\"># \u552f\u4e00 Web \u5165\u53e3<\/span>\nsrc\/\nDatabase.php\nTodoRepository.php\nviews\/\n<span class=\"hljs-keyword\">list<\/span>.php\nconfig.php\ncomposer.json<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-67\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><code>TodoRepository<\/code> \u6838\u5fc3\u908f\u8f2f<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-68\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">php\n<span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n<span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">App<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">PDO<\/span>;\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">TodoRepository<\/span> <\/span>{\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">__construct<\/span><span class=\"hljs-params\">( private PDO $pdo )<\/span> <\/span>{}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">all<\/span><span class=\"hljs-params\">()<\/span>: <span class=\"hljs-title\">array<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">$this<\/span>-&gt;pdo-&gt;query( <span class=\"hljs-string\">'SELECT * FROM todos ORDER BY id DESC'<\/span> )-&gt;fetchAll();\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">add<\/span><span class=\"hljs-params\">( string $title )<\/span>: <span class=\"hljs-title\">void<\/span> <\/span>{\n    $stmt = <span class=\"hljs-keyword\">$this<\/span>-&gt;pdo-&gt;prepare( <span class=\"hljs-string\">'INSERT INTO todos (title) VALUES (:title)'<\/span> );\n    $stmt-&gt;execute( [ <span class=\"hljs-string\">'title'<\/span> =&gt; $title ] );\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">toggle<\/span><span class=\"hljs-params\">( int $id )<\/span>: <span class=\"hljs-title\">void<\/span> <\/span>{\n    $stmt = <span class=\"hljs-keyword\">$this<\/span>-&gt;pdo-&gt;prepare( <span class=\"hljs-string\">'UPDATE todos SET done = NOT done WHERE id = :id'<\/span> );\n    $stmt-&gt;execute( [ <span class=\"hljs-string\">'id'<\/span> =&gt; $id ] );\n}\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">delete<\/span><span class=\"hljs-params\">( int $id )<\/span>: <span class=\"hljs-title\">void<\/span> <\/span>{\n    $stmt = <span class=\"hljs-keyword\">$this<\/span>-&gt;pdo-&gt;prepare( <span class=\"hljs-string\">'DELETE FROM todos WHERE id = :id'<\/span> );\n    $stmt-&gt;execute( [ <span class=\"hljs-string\">'id'<\/span> =&gt; $id ] );\n}\n}<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-68\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">\u5b8c\u6210\u6b64\u5c08\u6848\u5f8c\uff0c\u4f60\u5df2\u5177\u5099\u95b1\u8b80\u591a\u6578 PHP \u5c08\u6848\u9aa8\u67b6\u7684\u80fd\u529b!!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"%e6%8e%a8%e8%96%a6%e8%b3%87%e6%ba%90\">\u63a8\u85a6\u8cc7\u6e90<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.php.net\/manual\/zh\/\">PHP \u5b98\u65b9\u624b\u518a<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/phptherightway.com\/\">PHP: The Right Way\uff08\u4e2d\u6587\u793e\u7fa4\u8b6f\u672c\uff09<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/laravel.com\/docs\">Laravel \u6587\u4ef6<\/a>\uff08\u5b78\u6846\u67b6\u6642\uff09<\/li>\n\n\n\n<li><a href=\"https:\/\/phpunit.de\/\">PHPUnit \u6587\u4ef6<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e5%b0%be%e8%81%b2%ef%bc%9a%e5%ad%b8%e5%ae%8c-php-%e4%b9%8b%e5%be%8c%e7%9c%8b-wordpress\">\u5c3e\u8072\uff1a\u5b78\u5b8c PHP \u4e4b\u5f8c\u770b WordPress<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wordpress.org\/\">WordPress<\/a> \u662f\u7528 PHP \u5beb\u6210\u7684 <strong>\u5167\u5bb9\u7ba1\u7406\u7cfb\u7d71\uff08CMS\uff09<\/strong>\uff0c\u5168\u7403\u6578\u767e\u842c\u7db2\u7ad9\u4f7f\u7528\u3002\u5b83<strong>\u4e0d\u662f<\/strong> PHP \u672c\u8eab\uff0c\u800c\u662f\u5efa\u7acb\u5728 PHP + MySQL \u4e4b\u4e0a\u7684\u61c9\u7528\u7a0b\u5f0f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u82e5\u4f60\u4e4b\u5f8c\u8981\u7dad\u8b77 Wiki\u3001\u90e8\u843d\u683c\u3001\u4f01\u696d\u5b98\u7db2\u7b49 WordPress \u5c08\u6848\uff0c\u6703\u767c\u73fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u4f60\u5df2\u5b78\u7684 PHP<\/th><th>\u5728 WordPress \u4e2d\u7684\u5c0d\u61c9<\/th><\/tr><\/thead><tbody><tr><td><code>include<\/code> \/ \u5c08\u6848\u7d50\u69cb<\/td><td><code>get_header()<\/code>\u3001<code>get_template_part()<\/code><\/td><\/tr><tr><td><code>$_GET<\/code> \/ <code>$_POST<\/code><\/td><td>\u5f8c\u53f0\u8868\u55ae\u3001REST API\uff08\u4ecd\u5efa\u8b70\u7528 WP API\uff09<\/td><\/tr><tr><td>PDO \/ SQL<\/td><td><code>$wpdb<\/code>\u3001<code>WP_Query<\/code>\u3001\u5916\u639b\u7684\u8cc7\u6599\u8868<\/td><\/tr><tr><td><code>htmlspecialchars<\/code><\/td><td><code>esc_html()<\/code>\u3001<code>esc_url()<\/code> \u7b49\u5305\u88dd\u51fd\u5f0f<\/td><\/tr><tr><td>Session<\/td><td>Cookie + WordPress \u4f7f\u7528\u8005\u7cfb\u7d71<\/td><\/tr><tr><td>Hooks \u6982\u5ff5\uff08\u4e8b\u4ef6\uff09<\/td><td><code>add_action()<\/code> \/ <code>add_filter()<\/code><\/td><\/tr><tr><td>MVC \u601d\u7dad<\/td><td>\u6a21\u677f\uff08View\uff09+ \u4e3b\u984c PHP + \u5916\u639b\u908f\u8f2f<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5efa\u8b70\u9806\u5e8f<\/strong>\uff1a\u5148\u628a\u672c\u7bc7 PHP \u57fa\u790e\u8207\u5c0f\u5c08\u6848\u7df4\u719f \u2192 \u518d\u8b80 <a href=\"https:\/\/developer.wordpress.org\/themes\/\">WordPress Theme Handbook<\/a> \u2192 \u5f9e\u6539\u6a21\u677f\u3001\u52a0 <code>functions.php<\/code> Hook \u958b\u59cb\uff0c\u800c\u4e0d\u662f\u76f4\u63a5\u6539\u6838\u5fc3\u6a94\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress \u4e3b\u984c\u958b\u767c\u672c\u8cea\u4e0a\u662f\uff1a<strong>\u5728 CMS \u63d0\u4f9b\u7684\u639b\u52fe\u8207 API \u4e0a\uff0c\u7528\u4f60\u5df2\u5b78\u6703\u7684 PHP \u8f38\u51fa HTML\u3001\u67e5\u8cc7\u6599\u3001\u8655\u7406\u908f\u8f2f<\/strong>\u3002PHP \u5e95\u5b50\u7a69\uff0c\u770b\u4efb\u4f55 WordPress \u4e3b\u984c\u90fd\u6703\u8f15\u9b06\u8a31\u591a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9019\u662f\u4e00\u7bc7\u95dc\u65bcPHP\u5f9e0\u958b\u59cb\u7684\u5c0f\u96fb\u5b50\u66f8! \u524d\u8a00\uff1aPHP \u5728\u505a\u4ec0\u9ebc PHP\uff08PHP: Hypertext Preprocessor\uff09\u662f\u5728\u4f3a\u670d\u5668\u7aef\u57f7\u884c\u7684\u7a0b\u5f0f\u8a9e\u8a00\u3002\u4f7f\u7528\u8005\u7528\u700f\u89bd\u5668\u8acb\u6c42\u4e00\u500b .php \u7db2\u5740\uff0cWeb \u4f3a\u670d\u5668\u57f7\u884c PHP\uff0c\u901a\u5e38\u67e5\u8cc7\u6599\u5eab\u3001\u7d44\u88dd\u908f\u8f2f\uff0c\u6700\u5f8c\u8f38\u51fa HTML \/ JSON \u56de\u50b3\u3002 PHP \u4e26\u975e\u8f38\u51faHTML\u800c\u662f\u5d4c\u5165HTML\u6a19\u7c64\u4e2d\uff0c\u4ee5\u7279\u6b8a\u7684&lt;?php?&gt;\u6a19\u7c64\u4f86\u5ba3\u544aPHP\u7247\u6bb5\u3002 \u7b2c 0 \u7ae0\uff1a\u958b\u767c\u74b0\u5883 \u5feb\u901f\u958b\u59cb \u524d\u5f80codesandbox\u7dda\u4e0a\u7de8\u8f2f\u5668\uff0c\u5efa\u7acb\u5e33\u865f\u5f8c\u5efa\u7acbphp\u5c08\u6848 \u672c\u5730\u74b0\u5883\u5b89\u88dd \u4ee5\u4e0b\u63d0\u4f9b\u5982\u679c\u60f3\u8981\u5728\u81ea\u5df1\u672c\u5730\u5b89\u88dd\u74b0\u5883: \u5143\u4ef6 \u4f5c\u7528 PHP 8.2+ \u8a9e\u8a00\u57f7\u884c\u74b0\u5883\uff08\u5efa\u8b70 8.1 \u4ee5\u4e0a\uff09 Web Server Apache \u6216 Nginx\uff08\u6216\u7528 PHP \u5167\u5efa\u4f3a\u670d\u5668\u958b\u767c\uff09 MySQL \/ MariaDB \/ SQLite \u5132\u5b58\u8cc7\u6599\uff08\u9032\u968e\u7ae0\u7bc0\uff09 \u7de8\u8f2f\u5668 VS Code\u3001PhpStorm \u4e00\u9375\u5b89\u88dd\u5305\uff08\u64c7\u4e00\uff09\uff1a \u5728\u5c08\u6848\u76ee\u9304\u57f7\u884c\uff1a \u700f\u89bd http:\/\/localhost:8000\/index.php \u5373\u53ef\u3002\u9069\u5408\u5b78\u7fd2\uff0c\u6b63\u5f0f\u74b0\u5883\u8acb\u7528 Apache\/Nginx\u3002 info.php\uff1a \u770b\u5230\u7d2b\u8272\u8cc7\u8a0a\u9801\u4ee3\u8868\u6210\u529f\u3002\u6b63\u5f0f\u74b0\u5883\u52d9\u5fc5\u522a\u9664\u3002 CLI [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":440,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-645","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages\/645","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/comments?post=645"}],"version-history":[{"count":7,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages\/645\/revisions"}],"predecessor-version":[{"id":659,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages\/645\/revisions\/659"}],"up":[{"embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/pages\/440"}],"wp:attachment":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/media?parent=645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}