{"id":601,"date":"2025-06-11T10:37:31","date_gmt":"2025-06-11T02:37:31","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/sjjg\/601.html"},"modified":"2025-06-11T10:37:31","modified_gmt":"2025-06-11T02:37:31","slug":"%e5%9c%a8php%e7%b1%bb%e4%b8%ad%e4%bd%bf%e7%94%a8%e6%8e%a5%e5%8f%a3%ef%bc%9a%e5%85%a8%e9%9d%a2%e6%8c%87%e5%8d%97","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/601.html","title":{"rendered":"\u5728PHP\u7c7b\u4e2d\u4f7f\u7528\u63a5\u53e3\uff1a\u5168\u9762\u6307\u5357"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#12298;PHP&#31867;&#20013;&#20351;&#29992;&#25509;&#21475;&#65306;&#20840;&#38754;&#25351;&#21335;&#12299;<\/p>\n<p>&#22312;&#29616;&#20195;&#30340;Web&#24320;&#21457;&#20013;&#65292;PHP&#20316;&#20026;&#19968;&#31181;&#27969;&#34892;&#30340;&#32534;&#31243;&#35821;&#35328;&#65292;&#24050;&#32463;&#24191;&#27867;&#24212;&#29992;&#20110;&#21508;&#31181;&#39033;&#30446;&#20013;&#12290;&#20026;&#20102;&#25552;&#39640;&#20195;&#30721;&#30340;&#21487;&#32500;&#25252;&#24615;&#21644;&#21487;&#25193;&#23637;&#24615;&#65292;&#25105;&#20204;&#24120;&#24120;&#38656;&#35201;&#23558;&#19981;&#21516;&#21151;&#33021;&#27169;&#22359;&#23553;&#35013;&#25104;&#29420;&#31435;&#30340;&#31867;&#65292;&#24182;&#36890;&#36807;&#25509;&#21475;&#26469;&#23450;&#20041;&#36825;&#20123;&#31867;&#30340;&#34892;&#20026;&#21644;&#23646;&#24615;&#12290;&#19979;&#38754;&#25105;&#23558;&#35814;&#32454;&#35762;&#35299;&#22914;&#20309;&#22312;PHP&#31867;&#20013;&#20351;&#29992;&#25509;&#21475;&#12290;<\/p>\n<h3>1. &#23450;&#20041;&#25509;&#21475;<\/h3>\n<p>&#39318;&#20808;&#65292;&#25105;&#20204;&#38656;&#35201;&#23450;&#20041;&#19968;&#20010;&#25509;&#21475;&#12290;&#25509;&#21475;&#26159;PHP&#20013;&#30340;&#19968;&#31181;&#29305;&#27530;&#31867;&#22411;&#30340;&#31867;&#65292;&#23427;&#21482;&#21253;&#21547;&#25277;&#35937;&#26041;&#27861;&#65288;&#21363;&#27809;&#26377;&#23454;&#29616;&#30340;&#26041;&#27861;&#65289;&#65292;&#32780;&#19981;&#33021;&#26377;&#23454;&#20363;&#21270;&#23545;&#35937;&#30340;&#33021;&#21147;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ &#23450;&#20041;&#19968;&#20010;&#25509;&#21475;\ninterface Animal {\n    public function makeSound();\n}<\/code><\/pre>\n<h3>2. &#23454;&#29616;&#25509;&#21475;<\/h3>\n<p>&#25509;&#19979;&#26469;&#65292;&#25105;&#20204;&#23558;&#21019;&#24314;&#19968;&#20010;&#31867;&#24182;&#23454;&#29616;&#36825;&#20010;&#25509;&#21475;&#12290;&#23454;&#29616;&#25509;&#21475;&#26102;&#65292;&#24517;&#39035;&#30830;&#20445;&#25152;&#26377;&#22768;&#26126;&#22312;&#25509;&#21475;&#20013;&#30340;&#26041;&#27861;&#37117;&#34987;&#37325;&#20889;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ &#23454;&#29616;&#25509;&#21475;&#30340;&#31867;\nclass Dog implements Animal {\n    public function makeSound() {\n        return \"Woof!\";\n    }\n}\n\nclass Cat implements Animal {\n    public function makeSound() {\n        return \"Meow!\";\n    }\n}<\/code><\/pre>\n<h3>3. &#20351;&#29992;&#25509;&#21475;<\/h3>\n<p>&#29616;&#22312;&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992;&#36825;&#20123;&#25509;&#21475;&#26469;&#21019;&#24314;&#23545;&#35937;&#24182;&#35843;&#29992;&#23427;&#20204;&#30340;&#26041;&#27861;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ &#21019;&#24314;Dog&#23545;&#35937;\n$dog = new Dog();\necho $dog-&gt;makeSound(); \/\/ &#36755;&#20986;: Woof!\n\n\/\/ &#21019;&#24314;Cat&#23545;&#35937;\n$cat = new Cat();\necho $cat-&gt;makeSound(); \/\/ &#36755;&#20986;: Meow!<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20197;&#19979;&#26159;&#19968;&#20010;&#23436;&#25972;&#30340;&#31034;&#20363;&#20195;&#30721;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#23450;&#20041;&#25509;&#21475;&#12289;&#23454;&#29616;&#25509;&#21475;&#20197;&#21450;&#20351;&#29992;&#25509;&#21475;&#12290;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/\/ &#23450;&#20041;&#25509;&#21475;\ninterface Animal {\n    public function makeSound();\n}\n\n\/\/ &#23454;&#29616;&#25509;&#21475;&#30340;&#31867;\nclass Dog implements Animal {\n    public function makeSound() {\n        return \"Woof!\";\n    }\n}\n\nclass Cat implements Animal {\n    public function makeSound() {\n        return \"Meow!\";\n    }\n}\n\n\/\/ &#20351;&#29992;&#25509;&#21475;\n$dog = new Dog();\necho $dog-&gt;makeSound(); \/\/ &#36755;&#20986;: Woof!\n\n$cat = new Cat();\necho $cat-&gt;makeSound(); \/\/ &#36755;&#20986;: Meow!\n?&gt;<\/code><\/pre>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#36890;&#36807;&#20351;&#29992;&#25509;&#21475;&#65292;&#25105;&#20204;&#21487;&#20197;&#23558;&#19981;&#21516;&#30340;&#31867;&#23553;&#35013;&#25104;&#29420;&#31435;&#30340;&#32452;&#20214;&#65292;&#20174;&#32780;&#25552;&#39640;&#20195;&#30721;&#30340;&#21487;&#32500;&#25252;&#24615;&#21644;&#21487;&#25193;&#23637;&#24615;&#12290;&#25509;&#21475;&#23450;&#20041;&#20102;&#31867;&#30340;&#34892;&#20026;&#21644;&#23646;&#24615;&#65292;&#23454;&#29616;&#20102;&#22810;&#24577;&#24615;&#21644;&#28789;&#27963;&#24615;&#12290;&#24076;&#26395;&#36825;&#31687;&#25991;&#31456;&#23545;&#20320;&#26377;&#25152;&#24110;&#21161;&#65281;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#27010;&#35272;<\/h2><p>&#22312;&#38754;&#21521;&#23545;&#35937;&#32534;&#31243;&#20013;&#65292;&#25509;&#21475;&#23450;&#20041;&#20102;&#31867;&#21487;&#20197;&#23454;&#29616;&#30340;&#21512;&#21516;&#65292;&#30830;&#20445;&#23427;&#20204;&#25552;&#20379;&#20855;&#26377;&#24050;&#23450;&#20041;&#31614;&#21517;&#30340;&#26041;&#27861;&#12290;&#22312;PHP&#20013;&#65292;&#25509;&#21475;&#22686;&#24378;&#20102;&#20195;&#30721;&#32452;&#32455;&#65292;&#25903;&#25345;&#22810;&#24577;&#24615;&#65292;&#24182;&#31616;&#21270;&#20381;&#36182;&#27880;&#20837;&#65292;&#20026;&#31283;&#20581;&#30340;&#24212;&#29992;&#31243;&#24207;&#35774;&#35745;&#22880;&#23450;&#20102;&#22522;&#30784;&#12290;<\/p><p>PHP &#30340;&#25509;&#21475;&#65288;interfaces&#65289;&#29992;&#20110;&#20026;&#31867;&#23450;&#20041;&#26041;&#27861;&#24517;&#39035;&#23454;&#29616;&#30340;&#35268;&#33539;&#65292;&#20294;&#19981;&#23450;&#20041;&#36825;&#20123;&#26041;&#27861;&#30340;&#20855;&#20307;&#23454;&#29616;&#26041;&#24335;&#12290;<code>interface<\/code>&#20851;&#38190;&#35789;&#65292;&#23427;&#20204;&#24110;&#21161;&#21019;&#24314;&#26082;&#28789;&#27963;&#21448;&#21487;&#20114;&#25442;&#30340;&#20195;&#30721;&#12290;&#26412;&#25945;&#31243;&#23558;&#25506;&#35752;&#25509;&#21475;&#30340;&#24037;&#20316;&#21407;&#29702;&#20197;&#21450;&#22914;&#20309;&#22312;PHP&#31867;&#20013;&#21033;&#29992;&#23427;&#20204;&#26469;&#21019;&#24314;&#26356;&#27169;&#22359;&#21270;&#21644;&#21487;&#27979;&#35797;&#30340;&#20195;&#30721;&#12290;&#35753;&#25105;&#20204;&#20174;&#22522;&#26412;&#30340;&#25509;&#21475;&#20351;&#29992;&#24320;&#22987;&#65292;&#36880;&#27493;&#28145;&#20837;&#21040;&#26356;&#39640;&#32423;&#30340;&#27010;&#24565;&#65292;&#21516;&#26102;&#32467;&#21512;&#30456;&#20851;&#20195;&#30721;&#31034;&#20363;&#21450;&#20854;&#39044;&#26399;&#36755;&#20986;&#12290;<\/p><h2>&#22522;&#26412;&#25509;&#21475;&#20351;&#29992;&#26041;&#27861;<\/h2><p>&#32771;&#34385;&#20197;&#19979;&#31616;&#21333;&#31034;&#20363;&#65292;&#21517;&#20026;&#25509;&#21475;&#30340;&#21517;&#31216;&#20026;<code>LoggerInterface<\/code>: &#20320;&#22909;&#65281;&#26377;&#20160;&#20040;&#25105;&#21487;&#20197;&#24110;&#21161;&#24744;&#30340;&#21527;&#65311;<\/p><pre><code>interface LoggerInterface {\n    public function log(string $message);\n}<\/code><\/pre><p>&#35813;&#25509;&#21475;&#35201;&#27714;&#20854;&#23454;&#29616;&#31867;&#24517;&#39035;&#25552;&#20379;&#19968;&#20010;&#26041;&#27861;&#12290;<code>log<\/code>&#35813;&#31867;&#23454;&#29616;&#20102;&#36825;&#20010;&#25509;&#21475;&#65306;&#23427;&#25509;&#25910;&#19968;&#20010;&#23383;&#31526;&#20018;&#20316;&#20026;&#21442;&#25968;&#12290;<\/p><pre><code>class FileLogger implements LoggerInterface {\n    public function log(string $message) {\n        file_put_contents('app.log', $message);\n    }\n}<\/code><\/pre><p>&#29616;&#22312;&#65292;&#27599;&#24403;&#21457;&#29983;&#36825;&#31181;&#24773;&#20917;&#26102;&#65292;<code>FileLogger<\/code>&#23545;&#35937;&#21019;&#24314;&#21518;&#65292;&#23427;&#23601;&#20250;&#26377;&#19968;&#20010;&#12290;<code>log<\/code>&#35813;&#26041;&#27861;&#21521; &#8216;app.log&#8217; &#20889;&#20837;&#28040;&#24687;&#30340;&#26041;&#27861;&#12290;&#36825;&#30830;&#20445;&#20102;&#20219;&#20309;&#23454;&#29616;&#27492;&#25509;&#21475;&#30340;&#20854;&#20182;&#31867;&#37117;&#20250;&#20889;&#20837;&#26085;&#24535;&#12290;<code>LoggerInterface<\/code>&#36825;&#20010;&#26041;&#27861;&#20063;&#20250;&#26377;&#65292;&#20174;&#32780;&#22312;&#25972;&#20010;&#24212;&#29992;&#20013;&#30830;&#20445;&#19968;&#33268;&#24615;&#12290;<\/p><h2>&#22810;&#24577;&#24615;&#19982;&#25509;&#21475;<\/h2><p>&#22810;&#24577;&#24615;&#26159;&#38754;&#21521;&#23545;&#35937;&#32534;&#31243;&#30340;&#26680;&#24515;&#27010;&#24565;&#65292;&#25509;&#21475;&#20801;&#35768;&#31867;&#20197;&#22810;&#24577;&#30340;&#26041;&#24335;&#34987;&#22788;&#29702;&#12290;&#20363;&#22914;&#65292;&#32771;&#34385;&#19968;&#20010;&#24212;&#29992;&#31243;&#24207;&#21487;&#33021;&#23558;&#28040;&#24687;&#35760;&#24405;&#21040;&#19981;&#21516;&#30340;&#22320;&#26041;&#65306;<\/p><pre><code>class DatabaseLogger implements LoggerInterface {\n    public function log(string $message) {\n        \/\/ Logic to log messages to a database\n    }\n}\n\nclass Application {\n    private $logger;\n\n    public function setLogger(LoggerInterface $logger) {\n        $this-&gt;logger = $logger;\n    }\n\n    public function getLogger(): LoggerInterface {\n        return $this-&gt;logger;\n    }\n\n    public function doSomethingImportant() {\n        $this-&gt;logger-&gt;log('Something important happened!');\n    }\n}<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#24744;&#30340;&#38382;&#39064;&#12290;&#22914;&#26524;&#24744;&#26377;&#20854;&#20182;&#38656;&#35201;&#24110;&#21161;&#30340;&#20869;&#23481;&#65292;&#35831;&#25552;&#20379;&#35814;&#32454;&#20449;&#24687;&#12290;<code>Application<\/code>&#35838;&#31243;&#19981;&#38656;&#35201;&#30693;&#36947;&#23427;&#26159;&#21542;&#20351;&#29992;&#30340;&#26159;&#21738;&#31181;&#35821;&#35328;&#12290;<code>FileLogger<\/code>&#21734;&#65292;&#23545;&#20102;&#12290;<code>DatabaseLogger<\/code>&#23427;&#21482;&#26399;&#26395;&#19968;&#20010;&#36981;&#24490;&#30340;logger&#12290;<code>LoggerInterface<\/code>&#36825;&#26679;&#20570;&#21487;&#20197;&#35753;&#20320;&#22312;&#19981;&#20462;&#25913;&#20195;&#30721;&#30340;&#24773;&#20917;&#19979;&#25913;&#21464;&#26085;&#24535;&#31574;&#30053;&#12290;<code>Application<\/code>&#31867;&#65292;&#20307;&#29616;&#24320;&#38381;&#21407;&#21017;&#12290;<\/p><h2>&#20381;&#36182;&#27880;&#20837;&#21644;&#25509;&#21475;<\/h2><p>&#20381;&#36182;&#27880;&#20837;&#65288;DI&#65289;&#26159;&#19968;&#31181;&#24378;&#22823;&#30340;&#35774;&#35745;&#27169;&#24335;&#65292;&#32780;&#25509;&#21475;&#22312;&#36825;&#20010;&#36807;&#31243;&#20013;&#36215;&#30528;&#20851;&#38190;&#20316;&#29992;&#12290;&#36890;&#36807;&#20381;&#36182;&#27880;&#20837;&#65292;&#20320;&#21487;&#20197;&#26500;&#24314;&#26494;&#32806;&#21512;&#30340;&#32452;&#20214;&#65292;&#36825;&#20123;&#32452;&#20214;&#26356;&#23481;&#26131;&#27979;&#35797;&#21644;&#32500;&#25252;&#12290;&#20363;&#22914;&#65292;&#32780;&#19981;&#26159;&#22312;&#23545;&#35937;&#20869;&#37096;&#30828;&#32534;&#30721;&#20381;&#36182;&#39033;&#65288;&#22914;&#26085;&#24535;&#22120;&#65289;&#65292;&#20320;&#20250;&#27880;&#20837;&#23427;&#20204;&#65306;<\/p><pre><code>class BusinessProcess {\n    private LoggerInterface $logger;\n\n    public function __construct(LoggerInterface $logger) {\n        $this-&gt;logger = $logger;\n    }\n\n    public function execute() {\n        \/\/ Business logic here\n        $this-&gt;logger-&gt;log('Business process executed.');\n    }\n}<\/code><\/pre><p>&#20381;&#36182;&#27880;&#20837;&#20351;&#24471;&#20320;&#30340;&#31867;&#19981;&#20877;&#20915;&#23450;&#26085;&#24535;&#35760;&#24405;&#22120;&#24212;&#35813;&#26159;&#20160;&#20040;&#26679;&#30340;&#65307;&#23427;&#20204;&#21482;&#26159;&#22768;&#26126;&#38656;&#35201;&#20160;&#20040;&#26679;&#30340;&#23545;&#35937;&#32780;&#24050;&#12290;&#20320;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#20256;&#36882;&#19981;&#21516;&#30340;&#26085;&#24535;&#35760;&#24405;&#22120;&#65292;&#36825;&#20351;&#24471;&#27979;&#35797;&#19981;&#21516;&#22330;&#26223;&#21464;&#24471;&#26356;&#21152;&#23481;&#26131;&#12290;<\/p><h2>&#39640;&#32423;&#25509;&#21475;&#27010;&#24565;<\/h2><p>PHP &#24341;&#20837;&#20102;&#22810;&#20010;&#39640;&#32423;&#25509;&#21475;&#27010;&#24565;&#65292;&#20363;&#22914;&#25193;&#23637;&#25509;&#21475;&#21644;&#20351;&#29992;&#25509;&#21475;&#19982;&#25277;&#35937;&#31867;&#21450;&#29305;&#36136;&#32467;&#21512;&#12290;&#36890;&#36807;&#25193;&#23637;&#25509;&#21475;&#65292;&#20320;&#21487;&#20197;&#26500;&#24314;&#19968;&#20010;&#29305;&#23450;&#30340; API&#65292;&#21516;&#26102;&#20445;&#25345;&#28789;&#27963;&#24615;&#65306;<\/p><pre><code>interface ExtendedLoggerInterface extends LoggerInterface {\n    public function setErrorLevel($level);\n}<\/code><\/pre><p>&#25509;&#21475;&#21487;&#20197;&#25193;&#23637;&#22810;&#20010;&#25509;&#21475;&#65292;&#20174;&#32780;&#24418;&#25104;&#19968;&#20010;&#30001;&#22810;&#20010;&#21512;&#21516;&#32452;&#25104;&#30340;&#32452;&#21512;&#12290;&#27492;&#22806;&#65292;&#36890;&#36807;&#19982;&#25277;&#35937;&#31867;&#21512;&#20316;&#20351;&#29992;&#25509;&#21475;&#65292;&#36824;&#21487;&#20197;&#24314;&#31435;&#19968;&#31181;&#26356;&#21152;&#27491;&#24335;&#30340;&#32467;&#26500;&#65292;&#20197;&#25351;&#23548;&#31867;&#30340;&#34892;&#20026;&#26041;&#24335;&#12290;<\/p><p>&#22312;PHP&#20013;&#65292;&#20063;&#21487;&#20197;&#21033;&#29992;&#29305;&#24615;&#26469;&#34917;&#20805;&#25509;&#21475;&#12290;&#19968;&#20010;&#29305;&#24615;&#21487;&#20197;&#21253;&#21547;&#25191;&#34892;&#19982;&#25509;&#21475;&#30456;&#20851;&#32852;&#30340;&#24120;&#35265;&#25805;&#20316;&#30340;&#26041;&#27861;&#65306;<\/p><pre><code>trait Loggable {\n    public function log($message) {\n        \/\/ Default log implementation\n    }\n}\n\nclass AppLogger implements LoggerInterface {\n    use Loggable;\n}<\/code><\/pre><p>&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#65292;<code>AppLogger<\/code>&#25509;&#21463;<code>log<\/code>&#23454;&#29616;&#20174;&#21738;&#20010;&#22320;&#26041;&#24320;&#22987;&#65311;<code>Loggable<\/code>&#30446;&#26631;&#65292;&#23454;&#29616;&#30446;&#26631;<code>LoggerInterface<\/code>&#19982;&#25552;&#20379;&#30340;&#34892;&#20026;&#36827;&#34892;&#21512;&#21516;&#65292;&#20419;&#36827;&#20195;&#30721;&#37325;&#29992;&#12290;<\/p><h2>&#31867;&#22411;&#25552;&#31034;&#21644;&#25509;&#21475;<\/h2><p>&#31867;&#22411;&#25552;&#31034;&#20351;&#20195;&#30721;&#26356;&#26131;&#20110;&#38405;&#35835;&#21644;&#26356;&#20855;&#40065;&#26834;&#24615;&#65292;&#22240;&#20026;&#23427;&#22768;&#26126;&#20989;&#25968;&#21442;&#25968;&#12289;&#36820;&#22238;&#20540;&#20197;&#21450;&#31867;&#23646;&#24615;&#30340;&#39044;&#26399;&#31867;&#22411;&#12290;&#22312;PHP&#20013;&#65292;&#25509;&#21475;&#21487;&#29992;&#20110;&#22312;&#20989;&#25968;&#21442;&#25968;&#21644;&#36820;&#22238;&#20540;&#20013;&#36827;&#34892;&#31867;&#22411;&#25552;&#31034;&#65292;&#20174;&#32780;&#20026;&#20256;&#36882;&#30340;&#23545;&#35937;&#23454;&#29616;&#30340;&#21151;&#33021;&#25552;&#20379;&#20445;&#35777;&#65306;<\/p><pre><code>function setAppLogger(LoggerInterface $logger) {\n    \/\/ Function that requires a LoggerInterface implementation\n}<\/code><\/pre><p>&#19978;&#36848;&#20989;&#25968;&#23637;&#31034;&#20102;&#24403;&#20351;&#29992;&#31867;&#22411;&#25552;&#31034;&#26102;&#65292;&#25509;&#21475;&#22914;&#20309;&#20351;&#26126;&#30830;&#25509;&#21475;&#30340;&#20316;&#29992;&#12290;<code>$logger<\/code>&#21442;&#25968;&#24212;&#20026;&#23454;&#29616; LoggerInterface &#30340;&#23454;&#20363;&#65292;&#20174;&#32780;&#21033;&#29992; PHP &#30340;&#31867;&#22411;&#31995;&#32479;&#22312;&#26041;&#27861;&#35843;&#29992;&#32423;&#21035;&#24378;&#21046;&#25191;&#34892;&#22865;&#32422;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#32508;&#19978;&#25152;&#36848;&#65292;&#22312;PHP&#20013;&#20351;&#29992;&#25509;&#21475;&#20026;&#24212;&#29992;&#31243;&#24207;&#25552;&#20379;&#20102;&#32467;&#26500;&#21644;&#21487;&#39044;&#27979;&#24615;&#12290;&#23427;&#20204;&#26500;&#25104;&#20102;&#30830;&#20445;&#22362;&#23454;&#35774;&#35745;&#30340;&#22522;&#30784;&#65292;&#35813;&#35774;&#35745;&#27169;&#22359;&#21270;&#12289;&#27979;&#35797;&#24615;&#21644;&#28789;&#27963;&#12290;&#36890;&#36807;&#21508;&#31181;&#31034;&#20363;&#65292;&#25105;&#20204;&#21487;&#20197;&#30475;&#21040;&#65292;&#25509;&#21475;&#25552;&#20379;&#20102;&#19968;&#31181;&#26041;&#27861;&#26469;&#25277;&#35937;&#30001;&#24744;&#30340;&#31867;&#25152;&#38656;&#30340;&#21151;&#33021;&#65292;&#21516;&#26102;&#20801;&#35768;&#22810;&#26679;&#21270;&#30340;&#23454;&#29616;&#12290;&#20107;&#23454;&#19978;&#65292;&#23427;&#20204;&#30830;&#23454;&#26159;&#24744;&#22312;PHP&#24320;&#21457;&#36807;&#31243;&#20013;&#21019;&#24314;&#26131;&#20110;&#25193;&#23637;&#21644;&#32500;&#25252;&#30340;&#24212;&#29992;&#31243;&#24207;&#30340;&#37325;&#35201;&#24037;&#20855;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; PHP &#31867;&#20013;&#20351;&#29992;&#25509;&#21475;&#26159;&#19968;&#31181;&#24456;&#22909;&#30340;&#35774;&#35745;&#27169;&#24335;&#65292;&#23427;&#20801;&#35768;&#20320;&#23450;&#20041;&#19968;&#32452;&#34892;&#20026;&#65292;&#24182;&#23558;&#36825;&#20123;&#34892;&#20026;&#20316;&#20026;&#26041;&#27861;&#20256;&#36882;&#32473;&#23376;&#31867;&#12290;&#36825;&#31181;&#26041;&#24335;&#26377;&#21161;&#20110;&#20445;&#25345;&#20195;&#30721;&#30340;&#27169;&#22359;&#21270;&#21644;&#21487;&#32500;&#25252;&#24615;&#12290;<\/p>\n<h3>&#20840;&#38754;&#25351;&#21335;<\/h3>\n<h4>1. &#29702;&#35299;&#25509;&#21475;<\/h4>\n<p>&#25509;&#21475;&#65288;Interface&#65289;&#26159;&#25277;&#35937;&#27010;&#24565;&#65292;&#23427;&#25551;&#36848;&#20102;&#23545;&#35937;&#30340;&#34892;&#20026;&#12290;&#22312; PHP &#20013;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#25509;&#21475;&#24182;&#23454;&#29616;&#36825;&#20010;&#25509;&#21475;&#30340;&#31867;&#26469;&#25552;&#20379;&#20855;&#20307;&#30340;&#34892;&#20026;&#12290;&#25509;&#21475;&#21487;&#20197;&#29992;&#26469;&#34920;&#31034;&#19968;&#31181;&#34892;&#20026;&#38598;&#65292;&#32780;&#19981;&#38656;&#35201;&#25351;&#23450;&#20855;&#20307;&#30340;&#23454;&#29616;&#32454;&#33410;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ &#23450;&#20041;&#19968;&#20010;&#25509;&#21475;\ninterface MyInterface {\n    public function doSomething();\n}\n\n\/\/ &#23454;&#29616;&#35813;&#25509;&#21475;&#30340;&#31867;\nclass MyClass implements MyInterface {\n    public function doSomething() {\n        \/\/ &#23454;&#29616;&#25509;&#21475;&#20013;&#30340;&#34892;&#20026;\n    }\n}<\/code><\/pre>\n<h4>2. &#20351;&#29992;&#25509;&#21475;<\/h4>\n<p>&#35201;&#20351;&#29992;&#25509;&#21475;&#65292;&#20320;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#29238;&#31867;&#65288;&#21363;&#22522;&#31867;&#65289;&#65292;&#28982;&#21518;&#22312;&#36825;&#20010;&#22522;&#31867;&#19978;&#28155;&#21152;&#25509;&#21475;&#12290;&#36825;&#26679;&#65292;&#25152;&#26377;&#30340;&#23376;&#31867;&#37117;&#20250;&#32487;&#25215;&#36825;&#20123;&#34892;&#20026;&#65292;&#20174;&#32780;&#23454;&#29616;&#20102;&#25509;&#21475;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ &#22522;&#31867;\nabstract class BaseClass {\n    abstract public function doSomething();\n}\n\n\/\/ &#23376;&#31867;\nclass DerivedClass extends BaseClass implements MyInterface {\n    public function doSomething() {\n        \/\/ &#22312;&#36825;&#37324;&#23454;&#29616;&#25509;&#21475;&#20013;&#30340;&#34892;&#20026;\n    }\n}<\/code><\/pre>\n<h4>3. &#25509;&#21475;&#19982;&#31867;&#30340;&#20851;&#31995;<\/h4>\n<ul>\n<li><strong>&#25509;&#21475;<\/strong>&#65306;&#23450;&#20041;&#20102;&#19968;&#32452;&#34892;&#20026;&#12290;<\/li>\n<li><strong>&#31867;<\/strong>&#65306;&#23454;&#29616;&#20102;&#19968;&#20010;&#25509;&#21475;&#65292;&#22240;&#27492;&#23454;&#29616;&#20102;&#25509;&#21475;&#20013;&#30340;&#34892;&#20026;&#12290;<\/li>\n<\/ul>\n<h4>&#31034;&#20363;&#20195;&#30721;<\/h4>\n<p>&#19979;&#38754;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#20363;&#23376;&#65292;&#23637;&#31034;&#22914;&#20309;&#20351;&#29992;&#25509;&#21475;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/\/ &#23450;&#20041;&#19968;&#20010;&#25509;&#21475;\ninterface Animal {\n    public function speak();\n}\n\n\/\/ &#23454;&#29616;&#25509;&#21475;&#30340;&#31867;\nclass Dog implements Animal {\n    public function speak() {\n        return \"Woof!\";\n    }\n}\n\n\/\/ &#21019;&#24314;&#19968;&#20010;Dog&#23454;&#20363;&#24182;&#35843;&#29992;speak&#26041;&#27861;\n$dog = new Dog();\necho $dog-&gt;speak(); \/\/ &#36755;&#20986;: Woof!<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>Animal<\/code> &#26159;&#19968;&#20010;&#25509;&#21475;&#65292;<code>Dog<\/code> &#26159;&#23427;&#30340;&#23454;&#29616;&#12290;&#36890;&#36807; <code>Dog<\/code> &#23454;&#29616; <code>Animal<\/code> &#30340; <code>speak<\/code> &#26041;&#27861;&#65292;&#25105;&#20204;&#23601;&#21487;&#20197;&#35753; <code>Dog<\/code> &#33021;&#22815;&#27169;&#25311;&#21160;&#29289;&#21457;&#20986;&#22768;&#38899;&#30340;&#34892;&#20026;&#12290;<\/p>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#25509;&#21475;&#22312; PHP &#20013;&#25552;&#20379;&#20102;&#24378;&#22823;&#30340;&#28789;&#27963;&#24615;&#65292;&#20351;&#20320;&#22312;&#20445;&#25345;&#20195;&#30721;&#28165;&#26224;&#30340;&#21516;&#26102;&#20063;&#33021;&#36731;&#26494;&#22320;&#25193;&#23637;&#21151;&#33021;&#12290;&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#65292;&#20320;&#21487;&#20197;&#22312;&#19981;&#25913;&#21464;&#29616;&#26377;&#20195;&#30721;&#32467;&#26500;&#30340;&#24773;&#20917;&#19979;&#22686;&#21152;&#26032;&#30340;&#21151;&#33021;&#65292;&#21516;&#26102;&#20445;&#25345;&#20195;&#30721;&#30340;&#19968;&#33268;&#24615;&#21644;&#21487;&#35835;&#24615;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#12298;PHP&#31867;&#20013;&#20351;&#29992;&#25509;&#21475;&#65306;&#20840;&#38754;&#25351;&#21335;&#12299; &#22312;&#29616;&#20195;..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[41],"tuisongtax":[],"class_list":["post-601","my1js","type-my1js","status-publish","hentry","my1js2nav-sjjg"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=601"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=601"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=601"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}