{"id":751,"date":"2025-06-11T22:49:02","date_gmt":"2025-06-11T14:49:02","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/751.html"},"modified":"2025-06-11T22:49:02","modified_gmt":"2025-06-11T14:49:02","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8laravel%e7%9a%84%e8%b7%af%e7%94%b1%e9%97%ad%e5%8c%85%e4%b8%ad%e6%b3%a8%e5%85%a5%e4%be%9d%e8%b5%96%e9%a1%b9","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/751.html","title":{"rendered":"\u5982\u4f55\u5728Laravel\u7684\u8def\u7531\u95ed\u5305\u4e2d\u6ce8\u5165\u4f9d\u8d56\u9879"},"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>&#22312; Laravel &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#22312;&#36335;&#30001;&#38381;&#21253;&#20013;&#27880;&#20837;&#20381;&#36182;&#39033;&#12290;&#20197;&#19979;&#26159;&#20960;&#31181;&#24120;&#35265;&#30340;&#26041;&#27861;&#65306;<\/p>\n<h3>&#26041;&#27861;&#19968;&#65306;&#20351;&#29992; <code>app<\/code> &#20989;&#25968;<\/h3>\n<p>&#22914;&#26524;&#20320;&#38656;&#35201;&#27880;&#20837;&#20840;&#23616;&#26381;&#21153;&#23481;&#22120;&#20013;&#30340;&#26576;&#20010;&#26381;&#21153;&#65292;&#21487;&#20197;&#20351;&#29992; <code>app<\/code> &#20989;&#25968;&#12290;<\/p>\n<pre><code class=\"language-php\">Route::get('\/example', function () {\n    $service = app('MyService');\n    return view('example', ['service' =&gt; $service]);\n});<\/code><\/pre>\n<h3>&#26041;&#27861;&#20108;&#65306;&#20351;&#29992; <code>use<\/code> &#20851;&#38190;&#23383;<\/h3>\n<p>&#22914;&#26524;&#20320;&#30693;&#36947;&#35201;&#27880;&#20837;&#30340;&#26381;&#21153;&#21517;&#31216;&#65292;&#21487;&#20197;&#30452;&#25509;&#22312;&#38381;&#21253;&#20013;&#20351;&#29992; <code>use<\/code> &#20851;&#38190;&#23383;&#12290;<\/p>\n<pre><code class=\"language-php\">Route::get('\/example', function (MyService $service) {\n    return view('example', ['service' =&gt; $service]);\n});<\/code><\/pre>\n<h3>&#26041;&#27861;&#19977;&#65306;&#20351;&#29992; <code>bind<\/code> &#26041;&#27861;<\/h3>\n<p>&#22914;&#26524;&#20320;&#24076;&#26395;&#20026;&#26576;&#20010;&#29305;&#23450;&#30340;&#31867;&#32465;&#23450;&#21040;&#26381;&#21153;&#23481;&#22120;&#65292;&#21487;&#20197;&#22312;&#26381;&#21153;&#25552;&#20379;&#32773;&#20013;&#20351;&#29992; <code>bind<\/code> &#26041;&#27861;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ AppProvidersAppServiceProvider.php\nnamespace AppProviders;\n\nuse IlluminateSupportFacadesRoute;\nuse MyService;\n\nclass AppServiceProvider extends ServiceProvider\n{\n    public function boot()\n    {\n        Route::get('\/example', function (MyService $service) {\n            return view('example', ['service' =&gt; $service]);\n        });\n    }\n\n    public function register()\n    {\n        $this-&gt;app-&gt;bind(MyService::class, function ($app) {\n            return new MyService();\n        });\n    }\n}<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010; <code>MyService<\/code> &#31867;&#65292;&#24182;&#19988;&#25105;&#20204;&#24076;&#26395;&#22312;&#36335;&#30001;&#38381;&#21253;&#20013;&#27880;&#20837;&#23427;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ App\/Services\/MyService.php\nnamespace AppServices;\n\nclass MyService\n{\n    public function sayHello()\n    {\n        return 'Hello from MyService!';\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-php\">\/\/ routes\/web.php\nuse AppServicesMyService;\n\nRoute::get('\/example', function (MyService $myService) {\n    return view('example', ['message' =&gt; $myService-&gt;sayHello()]);\n});<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#22312; <code>AppServiceProvider<\/code> &#20013;&#32465;&#23450;&#20102; <code>MyService<\/code> &#31867;&#21040;&#26381;&#21153;&#23481;&#22120;&#65292;&#28982;&#21518;&#22312;&#36335;&#30001;&#38381;&#21253;&#20013;&#27880;&#20837;&#20102;&#36825;&#20010;&#26381;&#21153;&#24182;&#35843;&#29992;&#20102;&#23427;&#30340;&#26041;&#27861;&#12290;<\/p>\n<p>&#36890;&#36807;&#36825;&#20123;&#26041;&#27861;&#65292;&#20320;&#21487;&#20197;&#22312; Laravel &#30340;&#36335;&#30001;&#38381;&#21253;&#20013;&#36731;&#26494;&#22320;&#27880;&#20837;&#20381;&#36182;&#39033;&#12290;<\/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>&#20171;&#32461;<\/h2><p>&#20381;&#36182;&#27880;&#20837;&#26159;&#19968;&#31181;&#22312;&#38754;&#21521;&#23545;&#35937;&#32534;&#31243;&#20013;&#30340;&#24378;&#22823;&#25216;&#26415;&#65292;&#23427;&#20801;&#35768;&#32452;&#20214;&#35299;&#32806;&#24182;&#20351;&#20195;&#30721;&#26356;&#21152;&#27169;&#22359;&#21270;&#21644;&#21487;&#27979;&#35797;&#12290;&#22312;Laravel&#20013;&#65292;&#20381;&#36182;&#27880;&#20837;&#21487;&#20197;&#22312;&#24212;&#29992;&#31243;&#24207;&#30340;&#19981;&#21516;&#37096;&#20998;&#65288;&#21253;&#25324;&#25511;&#21046;&#22120;&#12289;&#26381;&#21153;&#21644;&#29978;&#33267;&#36335;&#30001;&#38381;&#21253;&#65289;&#36731;&#26494;&#20351;&#29992;&#12290;&#26412;&#25945;&#31243;&#25506;&#32034;&#22914;&#20309;&#23558;&#20381;&#36182;&#39033;&#27880;&#20837;&#21040;Laravel&#30340;&#36335;&#30001;&#38381;&#21253;&#20013;&#65292;&#20174;&#22522;&#30784;&#27010;&#24565;&#21040;&#26356;&#39640;&#32423;&#30340;&#27010;&#24565;&#12290;<\/p><h2>&#29702;&#35299;Laravel&#20013;&#30340;&#20381;&#36182;&#27880;&#20837;&#65288;Dependency Injection&#65292;DI&#65289;<\/h2><p>&#24635;&#30340;&#26469;&#35828;&#65292;&#20381;&#36182;&#27880;&#20837;&#24847;&#21619;&#30528;&#20026;&#31867;&#25110;&#20989;&#25968;&#25552;&#20379;&#23427;&#38656;&#35201;&#30340;&#23545;&#35937;&#30340;&#23454;&#20363;&#65292;&#32780;&#19981;&#26159;&#20869;&#37096;&#21019;&#24314;&#23427;&#20204;&#12290;Laravel&#30340;&#26381;&#21153;&#23481;&#22120;&#26159;&#19968;&#31181;&#24378;&#22823;&#30340;&#24037;&#20855;&#65292;&#29992;&#20110;&#31649;&#29702;&#31867;&#20381;&#36182;&#20851;&#31995;&#24182;&#36827;&#34892;&#20381;&#36182;&#27880;&#20837;&#12290;<\/p><h3>&#22522;&#26412;&#36335;&#30001;&#38381;&#21253;&#19982;&#20381;&#36182;&#27880;&#20837;<\/h3><pre><code>Route::get('\/user', function (UserRepository $userRepo) {\n   \/\/ You now have access to the UserRepository here.\n   $user = $userRepo-&gt;find(1);\n   return $user;\n});\n<\/code><\/pre><p>&#22312;&#19978;&#36848;&#20363;&#23376;&#20013;&#65292;<code>UserRepository<\/code>&#27880;&#20837;&#21040;&#36335;&#30001;&#38381;&#21253;&#20013;&#12290;&#24403;&#36335;&#30001;&#34987;&#35775;&#38382;&#26102;&#65292;Laravel &#20250;&#33258;&#21160;&#35299;&#26512;&#23427;&#12290;<code>UserRepository<\/code>&#20174;&#26381;&#21153;&#23481;&#22120;&#20013;&#21462;&#20986;&#24182;&#20256;&#36882;&#32473;&#38381;&#21253;&#12290;<\/p><h2>&#35299;&#20915;&#22810;&#20010;&#20381;&#36182;&#39033;<\/h2><p>&#22914;&#26524;&#24744;&#30340;&#36335;&#30001;&#38656;&#35201;&#22810;&#20010;&#20381;&#36182;&#39033;&#24590;&#20040;&#21150;&#65311;Laravel &#20248;&#38597;&#22320;&#22788;&#29702;&#20102;&#36825;&#20123;&#22810;&#22788;&#27880;&#20837;&#12290;&#20363;&#22914;&#65306;<\/p><pre><code>Route::get('\/post\/{id}', function ($id, PostRepository $postRepo, LoggerInterface $logger) {\n    $logger-&gt;info('Fetching post with id: ' . $id);\n    $post = $postRepo-&gt;find($id);\n    return view('post.show', compact('post'));\n});\n<\/code><\/pre><p>&#27492;&#36335;&#32447;&#23553;&#38381;&#27491;&#34987;&#27880;&#20837;&#20004;&#26041;&#38754;&#22240;&#32032;&#12290;<code>PostRepository<\/code>and a.<code>LoggerInterface<\/code>&#36825;&#20123;&#21442;&#25968;&#30001;Laravel&#20026;&#24744;&#33258;&#21160;&#22788;&#29702;&#12290;&#35831;&#27880;&#24847;&#65292;&#20687;&#36825;&#26679;&#30340;&#36335;&#30001;&#21442;&#25968;&#12290;<code>$id<\/code>&#19981;&#38656;&#35201;&#20174;&#23481;&#22120;&#20013;&#35299;&#21253;&#65292;&#32780;&#26159;&#20316;&#20026;&#21442;&#25968;&#39034;&#24207;&#20256;&#36882;&#12290;<\/p><h2>&#20351;&#29992;&#31867;&#22411;&#25552;&#31034;&#25511;&#21046;&#22120;&#26041;&#27861;&#20195;&#26367;<\/h2><p>&#23613;&#31649;&#21487;&#20197;&#30452;&#25509;&#22312;&#36335;&#30001;&#38381;&#21253;&#20013;&#27880;&#20837;&#20381;&#36182;&#65292;&#20294;&#36890;&#24120;&#26356;&#25512;&#33616;&#20351;&#29992;&#25511;&#21046;&#22120;&#65292;&#29305;&#21035;&#26159;&#22312;&#22788;&#29702;&#22797;&#26434;&#36923;&#36753;&#26102;&#12290;&#23558;&#20381;&#36182;&#39033;&#27880;&#20837;&#21040;&#25511;&#21046;&#22120;&#20013;&#20063;&#31867;&#20284;&#65306;<\/p><pre><code>class UserController extends Controller\n{\n    protected $userRepo;\n\n    public function __construct(UserRepository $userRepo)\n    {\n        $this-&gt;userRepo = $userRepo;\n    }\n\n    public function show($id)\n    {\n        $user = $this-&gt;userRepo-&gt;find($id);\n        return view('users.show', compact('user'));\n    }\n}\n<\/code><\/pre><p>&#20320;&#21487;&#20197;&#23450;&#20041;&#35201;&#20351;&#29992;&#30340;&#36335;&#30001;&#65292;&#35843;&#29992;&#25511;&#21046;&#22120;&#26041;&#27861;&#65306;<\/p><pre><code>Route::get('\/users\/{id}', 'UserController@show');\n<\/code><\/pre><p>&#36825;&#26159;&#26356;&#28165;&#27905;&#12289;&#26356;&#20855;&#25193;&#23637;&#24615;&#30340;&#26041;&#27861;&#65292;&#38543;&#30528;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#22797;&#26434;&#24230;&#30340;&#22686;&#21152;&#12290;<\/p><h2>&#22312;&#19978;&#19979;&#25991;&#20013;&#32465;&#23450;&#12290;<\/h2><p>&#22914;&#26524;&#20320;&#38656;&#35201;&#22312;&#25191;&#34892;&#29305;&#23450;&#38381;&#21253;&#26102;&#27880;&#20837;&#19968;&#20010;&#29305;&#23450;&#23454;&#20363;&#30340;&#31867;&#65292;&#37027;&#20040;&#19978;&#19979;&#25991;&#32465;&#23450;&#23601;&#26159;&#20320;&#30340;&#39318;&#36873;&#26041;&#27861;&#12290;&#36825;&#20801;&#35768;&#23545;&#27880;&#20837;&#30340;&#23454;&#20363;&#36827;&#34892;&#31934;&#32454;&#25511;&#21046;&#12290;&#20197;&#19979;&#26159;&#23454;&#29616;&#23427;&#30340;&#26041;&#27861;&#12290;<\/p><pre><code>this-&gt;app-&gt;when('AppHttpControllersUserController')\n   -&gt;needs('AppContractsUserRepository')\n   -&gt;give(function () {\n       return new CacheUserRepository(new EloquentUserRepository);\n   });\n<\/code><\/pre><p>&#19978;&#19979;&#25991;&#32465;&#23450;&#25552;&#20379;&#20102;&#19968;&#20010;&#29305;&#23450;&#30340;&#20179;&#24211;&#23454;&#29616;&#65292;&#21482;&#26377;&#22312;&#20026;&#20381;&#36182;&#20851;&#31995;&#36827;&#34892;&#35299;&#26512;&#26102;&#25165;&#20250;&#20351;&#29992;&#12290;<code>UserController<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><h2>&#20351;&#29992;&#26381;&#21153;&#25552;&#20379;&#21830;&#36827;&#34892;&#22797;&#26434;&#27880;&#23556;<\/h2><p>&#23545;&#20110;&#39640;&#32423;&#20381;&#36182;&#35299;&#26512;&#65292;&#29305;&#21035;&#26159;&#22312;&#28041;&#21450;&#22810;&#20010;&#32465;&#23450;&#21644;&#19978;&#19979;&#25991;&#27880;&#20837;&#26102;&#65292;&#26381;&#21153;&#25552;&#20379;&#32773;&#26159;&#19968;&#31181;&#21487;&#38752;&#30340;&#35774;&#35745;&#26550;&#26500;&#36873;&#25321;&#12290;&#22312;&#26381;&#21153;&#25552;&#20379;&#32773;&#20869;&#37096;&#65292;&#20320;&#21487;&#20197;&#23450;&#20041;&#22914;&#20309;&#31995;&#32479;&#24615;&#21644;&#21487;&#37325;&#29992;&#22320;&#35299;&#20915;&#20381;&#36182;&#20851;&#31995;&#12290;<\/p><h3>&#19968;&#20010;&#22823;&#20363;&#23376;&#12290;<\/h3><p>&#20551;&#35774;&#20320;&#22312;&#24212;&#29992;&#31243;&#24207;&#20013;&#38656;&#35201;&#26681;&#25454;&#19978;&#19979;&#25991;&#27880;&#20837;&#19981;&#21516;&#30340;&#26381;&#21153;&#23454;&#29616;&#12290;&#20363;&#22914;&#65292;&#20551;&#35774;&#26377;&#20010;&#25509;&#21475;<code>PaymentGatewayInterface<\/code>&#20004;&#31181;&#23454;&#29616;&#26041;&#24335;&#65306;<code>StripePaymentGateway<\/code>and &#26159;&#20013;&#25991;&#37324;&#30340;&ldquo;&#21644;&rdquo;&#65292;&#34920;&#31034;&#24182;&#21015;&#25110;&#32852;&#21512;&#30340;&#24847;&#24605;&#12290;<code>PayPalPaymentGateway<\/code>&#25152;&#20351;&#29992;&#30340;&#23454;&#26045;&#26041;&#24335;&#21487;&#33021;&#21462;&#20915;&#20110;&#29992;&#25143;&#30340;&#20559;&#22909;&#25110;&#20219;&#20309;&#20854;&#20182;&#19994;&#21153;&#36923;&#36753;&#12290;<\/p><p>&#39318;&#20808;&#65292;&#23450;&#20041;&#25509;&#21475;&#21644;&#23454;&#29616;&#65306;<\/p><pre><code>interface PaymentGatewayInterface {\n    public function processPayment($amount);\n}\n\nclass StripePaymentGateway implements PaymentGatewayInterface {\n    public function processPayment($amount) {\n        \/\/ Stripe payment processing logic\n    }\n}\n\nclass PayPalPaymentGateway implements PaymentGatewayInterface {\n    public function processPayment($amount) {\n        \/\/ PayPal payment processing logic\n    }\n}<\/code><\/pre><p>&#19979;&#19968;&#27493;&#65292;&#21019;&#24314;&#26381;&#21153;&#25552;&#20379;&#21830;&#65306;<\/p><p>&#29983;&#25104;&#19968;&#20010;&#26381;&#21153;&#25552;&#20379;&#21830;&#20351;&#29992; Artisan&#65306;<\/p><pre><code>php artisan make:provider PaymentServiceProvider<\/code><\/pre><p>&#25171;&#24320;&#21018;&#21018;&#21019;&#24314;&#30340;<code>PaymentServiceProvider<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#36825;&#21477;&#35805;&#12290;&#35831;&#37325;&#26032;&#25551;&#36848;&#24744;&#30340;&#38382;&#39064;&#25110;&#21477;&#23376;&#12290;<code>app\/Providers<\/code>&#25320;&#21495;&#30424;&#12290;<\/p><p>&#22312;<code>register<\/code>&#26381;&#21153;&#25552;&#20379;&#21830;&#30340;&#26041;&#27861;&#65292;&#24744;&#21487;&#20197;&#23450;&#20041;&#20915;&#23450;&#32465;&#23450;&#21040;&#21738;&#20010;&#23454;&#29616;&#30340;&#36923;&#36753;&#12290;<code>PaymentGatewayInterface<\/code>: &#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>use IlluminateSupportServiceProvider;\n\nclass PaymentServiceProvider extends ServiceProvider {\n    public function register() {\n        $this-&gt;app-&gt;bind(PaymentGatewayInterface::class, function ($app) {\n            \/\/ Logic to determine which implementation to use\n            if (\/* some condition *\/) {\n                return new StripePaymentGateway();\n            } else {\n                return new PayPalPaymentGateway();\n            }\n        });\n    }\n}\n<\/code><\/pre><p>&#22312;&#36825;&#19968;&#20363;&#23376;&#20013;&#65292;&#38381;&#21253;&#20301;&#20110;&#24490;&#29615;&#20869;&#37096;&#12290;<code>bind<\/code>&#26041;&#27861;&#21253;&#21547;&#30830;&#23450;&#23454;&#29616;&#30340;&#36923;&#36753;&#12290;<code>PaymentGatewayInterface<\/code>to return.<\/p><p>&#26368;&#21518;&#65292;&#27880;&#20876;&#12290;<code>PaymentServiceProvider<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#26126;&#30333;&#20320;&#22312;&#35828;&#20160;&#20040;&#12290;<code>config\/app.php<\/code>underneath<code>providers<\/code>&#25968;&#32452;&#65306;<\/p><pre><code>'providers' =&gt; [\n    \/\/ Other Service Providers...\n\n    AppProvidersPaymentServiceProvider::class,\n],\n<\/code><\/pre><p>&#29616;&#22312;&#65292;&#27599;&#24403;&#24744;&#21457;&#19968;&#20010;&#25552;&#31034;&#26102;&#65292;&#35831;&#21578;&#35785;&#25105;&#12290;<code>PaymentGatewayInterface<\/code>&#22312;&#25511;&#21046;&#22120;&#25110;&#20854;&#20182;&#31867;&#20013;&#65292;Laravel&#30340;&#26381;&#21153;&#23481;&#22120;&#20250;&#26681;&#25454;&#20320;&#22312;&#26381;&#21153;&#25552;&#20379;&#32773;&#20013;&#23450;&#20041;&#30340;&#36923;&#36753;&#33258;&#21160;&#27880;&#20837;&#27491;&#30830;&#30340;&#23454;&#29616;&#12290;<\/p><pre><code>use AppServicesPaymentGatewayInterface;\n\nclass PaymentController extends Controller {\n    protected $paymentGateway;\n\n    public function __construct(PaymentGatewayInterface $paymentGateway) {\n        $this-&gt;paymentGateway = $paymentGateway;\n    }\n\n    public function processPayment(Request $request) {\n        $amount = $request-&gt;amount;\n        $this-&gt;paymentGateway-&gt;processPayment($amount);\n        \/\/ Further logic\n    }\n}\n<\/code><\/pre><p>&#36825;&#20010;&#31034;&#20363;&#23637;&#31034;&#20102;&#22914;&#20309;&#20351;&#29992;&#26381;&#21153;&#25552;&#20379;&#32773;&#26469;&#22788;&#29702;&#22797;&#26434;&#30340;&#20381;&#36182;&#27880;&#20837;&#22330;&#26223;&#65292;&#20174;&#32780;&#35753;&#20320;&#33021;&#22815;&#20197;&#25972;&#27905;&#21644;&#28789;&#27963;&#30340;&#26041;&#24335;&#31649;&#29702;&#20381;&#36182;&#20851;&#31995;&#12290;<\/p><h2>&#26368;&#20339;&#23454;&#36341;&#21644;&#38519;&#38449;<\/h2><p>&#38656;&#35201;&#27880;&#24847;&#30340;&#20960;&#20010;&#28857;&#26159;&#65306;<\/p><p>&#20351;&#29992;&#36335;&#30001;&#27169;&#22411;&#32465;&#23450;&#26469;&#30452;&#25509;&#35299;&#26512;&#27169;&#22411;&#23454;&#20363;&#12290;<\/p><p>&#36981;&#24490;&#21333;&#19968;&#32844;&#36131;&#21407;&#21017;&#65292;&#21363;&#20351;&#22312;&#36335;&#30001;&#20851;&#38381;&#26102;&#20063;&#26159;&#22914;&#27492;&#65292;&#20197;&#20351;&#20195;&#30721;&#26356;&#26131;&#20110;&#32500;&#25252;&#12290;<\/p><p>&#36991;&#20813;&#20351;&#29992;&#29992;&#20110;&#32531;&#23384;&#30340;&#38381;&#21253;&#65292;&#22240;&#20026;PHP&#26080;&#27861;&#32531;&#23384;&#38381;&#21253;&#12290;<\/p><p>&#20381;&#36182;&#27880;&#20837;&#26159;&#32534;&#20889;&#21487;&#27979;&#35797;&#12289;&#21487;&#32500;&#25252;&#20195;&#30721;&#30340;&#37325;&#35201;&#26041;&#38754;&#65292;&#22312;Laravel&#20013;&#65292;&#26381;&#21153;&#23481;&#22120;&#20351;&#36825;&#19968;&#36807;&#31243;&#21464;&#24471;&#30452;&#35266;&#21644;&#21487;&#25193;&#23637;&#12290;&#36890;&#36807;&#36981;&#24490;&#26412;&#25991;&#25152;&#36848;&#30340;&#23454;&#36341;&#65292;&#24744;&#21487;&#20197;&#21033;&#29992;Laravel&#30340;&#33021;&#21147;&#26469;&#32534;&#20889;&#26356;&#28165;&#27905;&#12289;&#26356;&#21487;&#27979;&#35797;&#30340;&#20195;&#30721;&#65292;&#21516;&#26102;&#20351;&#29992;&#20381;&#36182;&#27880;&#20837;&#12290;<\/p><h2>&#32467;&#35770;<\/h2><p>&#22312;Laravel&#30340;&#36335;&#30001;&#38381;&#21253;&#20013;&#24341;&#20837;&#20381;&#36182;&#27880;&#20837;&#21487;&#20197;&#26174;&#33879;&#25552;&#39640;&#24037;&#20316;&#27969;&#31243;&#21644;&#24212;&#29992;&#31243;&#24207;&#30340;&#27169;&#22359;&#21270;&#31243;&#24230;&#12290;&#29702;&#35299;Laravel&#30340;&#26381;&#21153;&#23481;&#22120;&#65292;&#20174;&#31616;&#21333;&#30340;&#27880;&#20837;&#24320;&#22987;&#65292;&#21033;&#29992;&#26381;&#21153;&#25552;&#20379;&#31243;&#24207;&#21644;&#19978;&#19979;&#25991;&#32465;&#23450;&#22788;&#29702;&#22797;&#26434;&#24773;&#20917;&#12290;&#25317;&#25265;&#36825;&#20123;&#25216;&#24039;&#26469;&#21019;&#20316;&#21487;&#32500;&#25252;&#21644;&#26131;&#20110;&#27979;&#35797;&#30340;&#20195;&#30721;&#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; Laravel &#20013;&#65292;&#24403;&#20320;&#38656;&#35201;&#22312;&#36335;&#30001;&#38381;&#21253;&#65288;laravel &#30340; route() &#26041;&#27861;&#65289;&#20013;&#27880;&#20837;&#20381;&#36182;&#39033;&#26102;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; Laravel &#30340; Eloquent ORM &#25110;&#32773;&#26159;&#22312; laravel &#26694;&#26550;&#20013;&#23450;&#20041;&#30340;&#20013;&#38388;&#20214;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#20570;&#21040;&#36825;&#19968;&#28857;&#30340;&#20960;&#31181;&#26041;&#27861;&#65306;<\/p>\n<h3>1. &#20351;&#29992; Eloquent ORM<\/h3>\n<p>&#22914;&#26524;&#20320;&#27491;&#22312;&#20351;&#29992; Eloquent ORM&#65292;&#24182;&#19988;&#24076;&#26395;&#23558;&#19968;&#20123;&#25968;&#25454;&#27880;&#20837;&#21040;&#20320;&#30340;&#36335;&#30001;&#38381;&#21253;&#20013;&#65292;&#20320;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppModelsUser;\n\/\/ ...\n\n$router-&gt;group([\n    'prefix' =&gt; 'api\/users',\n    'as'     =&gt; 'api.user.',\n], function ($router) {\n    $router-&gt;post('\/store', [\n        'uses' =&gt; 'UserController@store',\n        'middleware' =&gt; ['auth:api'],\n    ]);\n});<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010;&#21517;&#20026; <code>UserController<\/code> &#30340;&#25511;&#21046;&#22120;&#65292;&#23427;&#26377;&#19968;&#20010;&#21517;&#20026; <code>store<\/code> &#30340;&#26041;&#27861;&#12290;&#36825;&#20010;&#26041;&#27861;&#20250;&#22312;&#29992;&#25143; API &#36335;&#30001;&#19978;&#34987;&#35843;&#29992;&#12290;<\/p>\n<h3>2. &#20351;&#29992;&#20013;&#38388;&#20214;<\/h3>\n<p>&#21478;&#19968;&#31181;&#26041;&#24335;&#26159;&#20351;&#29992; Laravel &#20013;&#38388;&#20214;&#26469;&#27880;&#20837;&#20381;&#36182;&#39033;&#12290;&#20363;&#22914;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#20013;&#38388;&#20214;&#24182;&#23558;&#20854;&#28155;&#21152;&#21040;&#20320;&#30340;&#36335;&#30001;&#20013;&#12290;&#36825;&#26679;&#20570;&#30340;&#22909;&#22788;&#26159;&#21487;&#20197;&#26356;&#22909;&#22320;&#31649;&#29702;&#20013;&#38388;&#20214;&#21644;&#20381;&#36182;&#20851;&#31995;&#12290;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpMiddleware;\n\nclass MyMiddleware\n{\n    public function handle($request, Closure $next)\n    {\n        \/\/ &#22312;&#36825;&#37324;&#28155;&#21152;&#20320;&#30340;&#36923;&#36753;\n        return $next($request);\n    }\n}\n\n\/\/ ...\n$router-&gt;middleware(['auth:api'])-&gt;group(function () use ($app, $config) {\n    $app['my.middleware'] = new MyMiddleware();\n    $app['my.middleware']-&gt;handle();\n});\n\n\/\/ &#22312;&#25511;&#21046;&#22120;&#20013;&#20351;&#29992;\n$user = $this-&gt;myMiddleware-&gt;handle(new User());<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>MyMiddleware<\/code> &#26159;&#25105;&#20204;&#30340;&#20013;&#38388;&#20214;&#31867;&#65292;&#25105;&#20204;&#22312; <code>auth:api<\/code> &#37197;&#32622;&#20013;&#27880;&#20876;&#20102;&#23427;&#65292;&#24182;&#22312;&#36335;&#30001;&#32452;&#20013;&#27880;&#20837;&#20102; <code>my.middleware<\/code>&#12290;<\/p>\n<h3>&#27880;&#24847;&#20107;&#39033;<\/h3>\n<ul>\n<li><strong>&#20381;&#36182;&#27880;&#20837;<\/strong>&#65306;&#20381;&#36182;&#27880;&#20837;&#26159;&#19968;&#31181;&#32534;&#31243;&#27169;&#24335;&#65292;&#20801;&#35768;&#20320;&#22312;&#19981;&#30452;&#25509;&#35775;&#38382;&#20854;&#20182;&#27169;&#22359;&#25110;&#24211;&#23454;&#20363;&#30340;&#22320;&#26041;&#33719;&#21462;&#23427;&#20204;&#12290;&#36825;&#22312; Laravel &#20013;&#38750;&#24120;&#26377;&#29992;&#65292;&#22240;&#20026;&#23427;&#21487;&#20197;&#31616;&#21270;&#20195;&#30721;&#32467;&#26500;&#65292;&#20943;&#23569;&#32806;&#21512;&#24615;&#12290;<\/li>\n<li><strong>&#23433;&#20840;&#24615;<\/strong>&#65306;&#30830;&#20445;&#25152;&#26377;&#27880;&#20837;&#37117;&#26159;&#23433;&#20840;&#30340;&#65292;&#36991;&#20813;&#27880;&#20837;&#25915;&#20987;&#12290;&#22312; Laravel &#20013;&#65292;&#36890;&#24120;&#20250;&#20351;&#29992; Laravel &#23433;&#20840;&#29615;&#22659; (Laravel Envoy) &#26469;&#22788;&#29702;&#36825;&#20123;&#24773;&#20917;&#12290;<\/li>\n<\/ul>\n<p>&#35831;&#26681;&#25454;&#20320;&#30340;&#20855;&#20307;&#38656;&#27714;&#36873;&#25321;&#21512;&#36866;&#30340;&#26041;&#27861;&#12290;&#22914;&#26524;&#20320;&#26377;&#29305;&#23450;&#30340;&#38656;&#27714;&#25110;&#38382;&#39064;&#65292;&#35831;&#25552;&#20379;&#26356;&#22810;&#35814;&#32454;&#20449;&#24687;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; Laravel &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#22312;&#36335;&#30001;&#038;#3..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-751","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"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\/751","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=751"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=751"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=751"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}