{"id":1043,"date":"2025-06-12T11:19:10","date_gmt":"2025-06-12T03:19:10","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1043.html"},"modified":"2025-06-12T11:19:10","modified_gmt":"2025-06-12T03:19:10","slug":"symfony%e5%92%8claravel%ef%bc%9a%e5%93%aa%e4%b8%aaphp%e6%a1%86%e6%9e%b6%e6%9b%b4%e5%a5%bd%ef%bc%9f","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1043.html","title":{"rendered":"Symfony\u548cLaravel\uff1a\u54ea\u4e2aPHP\u6846\u67b6\u66f4\u597d\uff1f"},"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>&#20316;&#20026;AI&#21161;&#25163;&#65292;&#25105;&#19981;&#33021;&#23545;&#20004;&#20010;&#27969;&#34892;&#30340;PHP&#26694;&#26550;&#36827;&#34892;&#27604;&#36739;&#65292;&#22240;&#20026;&#23427;&#20204;&#37117;&#26377;&#20854;&#29420;&#29305;&#30340;&#29305;&#28857;&#21644;&#36866;&#29992;&#22330;&#26223;&#12290;Symfony&#26159;&#19968;&#20010;&#25104;&#29087;&#19988;&#21151;&#33021;&#24378;&#22823;&#30340;&#26694;&#26550;&#65292;&#36866;&#29992;&#20110;&#38656;&#35201;&#22797;&#26434;&#24212;&#29992;&#31243;&#24207;&#30340;&#22823;&#22411;&#39033;&#30446;&#12290;&#32780;Laravel&#21017;&#20197;&#20854;&#31616;&#27905;&#12289;&#26131;&#29992;&#21644;&#24555;&#36895;&#24320;&#21457;&#33021;&#21147;&#32780;&#38395;&#21517;&#12290;<\/p>\n<p>&#22914;&#26524;&#20320;&#27491;&#22312;&#23547;&#25214;&#19968;&#20010;&#36866;&#21512;&#23567;&#22411;&#39033;&#30446;&#30340;&#26694;&#26550;&#65292;&#37027;&#20040;Laravel&#21487;&#33021;&#26356;&#36866;&#21512;&#20320;&#12290;&#23427;&#25552;&#20379;&#20102;&#35768;&#22810;&#20869;&#32622;&#30340;&#21151;&#33021;&#21644;&#24555;&#25463;&#24037;&#20855;&#65292;&#20351;&#24471;&#24320;&#21457;&#36807;&#31243;&#26356;&#21152;&#39640;&#25928;&#12290;&#20363;&#22914;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;Laravel&#30340;Eloquent ORM&#26469;&#31616;&#21270;&#25968;&#25454;&#24211;&#25805;&#20316;&#65292;&#25110;&#32773;&#20351;&#29992;Laravel&#30340; Blade&#27169;&#26495;&#24341;&#25806;&#26469;&#24555;&#36895;&#29983;&#25104;HTML&#39029;&#38754;&#12290;<\/p>\n<p>&#22914;&#26524;&#20320;&#24076;&#26395;&#21019;&#24314;&#19968;&#20010;&#22797;&#26434;&#30340;Web&#24212;&#29992;&#65292;&#37027;&#20040;Symfony&#21487;&#33021;&#26356;&#36866;&#21512;&#20320;&#12290;&#23427;&#25552;&#20379;&#20102;&#26356;&#22810;&#30340;&#28789;&#27963;&#24615;&#21644;&#33258;&#23450;&#20041;&#36873;&#39033;&#65292;&#20801;&#35768;&#24320;&#21457;&#32773;&#26681;&#25454;&#20855;&#20307;&#38656;&#27714;&#36827;&#34892;&#23450;&#21046;&#21270;&#24320;&#21457;&#12290;&#20363;&#22914;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;Symfony&#30340;Dependency Injection&#23481;&#22120;&#26469;&#31649;&#29702;&#20381;&#36182;&#20851;&#31995;&#65292;&#25110;&#32773;&#20351;&#29992;Symfony&#30340;Event Dispatcher&#26469;&#22788;&#29702;&#20107;&#20214;&#12290;<\/p>\n<p>&#24635;&#30340;&#26469;&#35828;&#65292;&#36873;&#25321;&#21738;&#20010;PHP&#26694;&#26550;&#21462;&#20915;&#20110;&#20320;&#30340;&#20855;&#20307;&#38656;&#27714;&#21644;&#39033;&#30446;&#35268;&#27169;&#12290;&#22914;&#26524;&#20320;&#38656;&#35201;&#19968;&#20010;&#25104;&#29087;&#30340;&#26694;&#26550;&#26469;&#25903;&#25345;&#22823;&#22411;&#39033;&#30446;&#65292;&#37027;&#20040;Symfony&#21487;&#33021;&#26159;&#26356;&#22909;&#30340;&#36873;&#25321;&#12290;&#22914;&#26524;&#20320;&#24076;&#26395;&#21019;&#24314;&#19968;&#20010;&#31616;&#21333;&#30340;Web&#24212;&#29992;&#65292;&#37027;&#20040;Laravel&#21487;&#33021;&#26159;&#26356;&#22909;&#30340;&#36873;&#25321;&#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><p>&#36873;&#25321;&#21512;&#36866;&#30340;PHP&#26694;&#26550;&#22312;&#24456;&#22823;&#31243;&#24230;&#19978;&#20915;&#23450;&#20102;web&#39033;&#30446;&#30340;&#25104;&#21151;&#19982;&#21542;&#12290;&#22312;&#26368;&#21463;&#27426;&#36814;&#30340;PHP&#26694;&#26550;&#20013;&#65292;Symfony&#21644;Laravel&#22240;&#20854;&#24378;&#22823;&#30340;&#21151;&#33021;&#21644;&#24320;&#21457;&#32773;&#21451;&#22909;&#30340;&#26550;&#26500;&#32780;&#21463;&#21040;&#20102;&#24191;&#27867;&#27426;&#36814;&#12290;&#28982;&#32780;&#65292;&#36825;&#20010;&#38382;&#39064;&#30340;&#31572;&#26696;&#21487;&#33021;&#20250;&#22240;&#29305;&#23450;&#39033;&#30446;&#30340;&#38656;&#27714;&#32780;&#21464;&#21270;&#65292;&#25105;&#20204;&#38656;&#35201;&#28145;&#20837;&#20998;&#26512;&#36825;&#20004;&#31181;&#26694;&#26550;&#26469;&#24110;&#21161;&#24744;&#20570;&#20986;&#26126;&#26234;&#30340;&#36873;&#25321;&#12290;<\/p><h2>&#20171;&#32461;Symfony&#21644;Laravel<\/h2><p>Symfony &#26159;&#19968;&#32452; PHP &#32452;&#20214;&#21644;&#24212;&#29992;&#26694;&#26550;&#65292;&#20197;&#20854;&#31283;&#23450;&#24615;&#21644;&#21487;&#38752;&#24615;&#33879;&#31216;&#12290;&#23427;&#36981;&#24490;&#20225;&#19994;&#24320;&#21457;&#25351;&#21335;&#65292;&#24182;&#36866;&#21512;&#22823;&#22411;&#39033;&#30446;&#12290;&#23427;&#20801;&#35768;&#24320;&#21457;&#32773;&#21019;&#24314;&#28789;&#27963;&#36866;&#24212;&#19994;&#21153;&#38656;&#27714;&#30340;&#21487;&#25193;&#23637;&#32593;&#31449;&#12290;Symfony &#24341;&#20837;&#20102;&#27169;&#22359;&#30340;&#27010;&#24565;&#65292;&#31867;&#20284;&#20110;&#25554;&#20214;&#65292;&#21487;&#20197;&#22312;&#22810;&#20010;&#39033;&#30446;&#20013;&#37325;&#29992;&#12290;<\/p><p>&#30456;&#27604;&#20043;&#19979;&#65292;Laravel&#20197;&#20854;&#20248;&#38597;&#30340;&#35821;&#27861;&#21644;&#20351;&#24320;&#21457;&#21464;&#24471;&#24841;&#24555;&#32780;&#33879;&#31216;&#12290;&#23427;&#22312;&#32467;&#26500;&#26041;&#38754;&#38750;&#24120;&#22266;&#25191;&#24049;&#35265;&#65292;&#36825;&#26377;&#21161;&#20110;&#31616;&#21270;&#24320;&#21457;&#36807;&#31243;&#12290;Laravel&#36824;&#25317;&#26377;&#19968;&#20010;&#29983;&#24577;&#31995;&#32479;&#65292;&#21253;&#25324;&#24037;&#20855;&#22914;Forge&#21644;Envoyer&#65292;&#20351;&#24471;&#24212;&#29992;&#37096;&#32626;&#21464;&#24471;&#26356;&#21152;&#23481;&#26131;&#12290;<\/p><h2>&#35774;&#32622;&#21644;&#37197;&#32622;<\/h2><p>&#35201;&#24320;&#22987;&#20351;&#29992;Symfony&#65306;<\/p><pre><code>composer create-project symfony\/website-skeleton my_project<\/code><\/pre><p>&#35201;&#24320;&#22987;&#19968;&#20010;&#26032;&#30340;Laravel&#39033;&#30446;&#65306;<\/p><pre><code>composer create-project --prefer-dist laravel\/laravel blog<\/code><\/pre><p>&#21363;&#20351;&#26159;&#31616;&#21333;&#30340;&#21629;&#20196;&#20063;&#33021;&#25581;&#31034;&#27599;&#20010;&#26694;&#26550;&#30340;&#20351;&#29992;&#26041;&#27861;&#12290;Symfony&#30340;&#39592;&#26550;&#39033;&#30446;&#38750;&#24120;&#36866;&#21512;&#36827;&#34892;&#20005;&#32899;&#30340;&#24212;&#29992;&#31243;&#24207;&#24320;&#21457;&#65292;&#32780;Laravel&#30340;&ldquo;&#21338;&#23458;&rdquo;&#21017;&#24314;&#35758;&#23427;&#21487;&#20197;&#29992;&#20110;&#20219;&#20309;&#31867;&#22411;&#30340;Web&#24212;&#29992;&#31243;&#24207;&#30340;&#24555;&#36895;&#24320;&#21457;&#12290;<\/p><h2>&#36335;&#30001;&#21644;&#25511;&#21046;&#22120;<\/h2><p>&#22312;Symfony&#20013;&#65292;&#36335;&#30001;&#21487;&#20197;&#22312;YAML&#12289;XML&#25110;PHP&#20013;&#37197;&#32622;&#65292;&#20026;&#24320;&#21457;&#20154;&#21592;&#25552;&#20379;&#20102;&#23450;&#20041;&#36335;&#30001;&#30340;&#22810;&#31181;&#26041;&#24335;&#36873;&#25321;&#65306;<\/p><pre><code># config\/routes.yaml\nindex:\n    path: \/\n    controller: AppControllerDefaultController::index<\/code><\/pre><p>Laravel &#20351;&#29992;&#34920;&#36798;&#24335;&#36335;&#30001;&#65292;&#36825;&#20123;&#36335;&#30001;&#36890;&#24120;&#30452;&#25509;&#22312; routes\/web.php &#25991;&#20214;&#20013;&#22788;&#29702;&#65306;<\/p><pre><code>Route::get('\/', function () {\n    return view('welcome');\n});<\/code><\/pre><h2>&#27169;&#26495;&#24341;&#25806;&#26159;&#19968;&#31181;&#29992;&#20110;&#22788;&#29702;&#21644;&#28210;&#26579;HTML&#12289;XML&#25110;&#20854;&#20182;&#25991;&#26412;&#26684;&#24335;&#30340;&#24037;&#20855;&#65292;&#23427;&#20801;&#35768;&#24320;&#21457;&#32773;&#22312;&#29983;&#25104;&#21160;&#24577;&#32593;&#39029;&#26102;&#20351;&#29992;&#39044;&#23450;&#20041;&#30340;&#27169;&#26495;&#20195;&#30721;&#26469;&#25511;&#21046;&#39029;&#38754;&#30340;&#20869;&#23481;&#23637;&#31034;&#26041;&#24335;&#12290;&#36825;&#20123;&#24341;&#25806;&#36890;&#24120;&#21253;&#25324;&#20197;&#19979;&#20960;&#20010;&#20851;&#38190;&#21151;&#33021;&#65306;\n\n&#27169;&#26495;&#35821;&#35328;&#65306;&#27169;&#26495;&#24341;&#25806;&#25903;&#25345;&#29305;&#23450;&#30340;&#35821;&#35328;&#25110;&#35821;&#27861;&#65292;&#29992;&#20110;&#25551;&#36848;&#22914;&#20309;&#23558;&#25968;&#25454;&#22635;&#20805;&#21040;&#39044;&#35774;&#30340;&#32467;&#26500;&#20013;&#65292;&#20174;&#32780;&#29983;&#25104;&#26368;&#32456;&#30340;&#36755;&#20986;&#12290;\n\n&#25968;&#25454;&#32465;&#23450;&#65306;&#27169;&#26495;&#24341;&#25806;&#21487;&#20197;&#19982;&#21518;&#31471;&#26381;&#21153;&#22120;&#36827;&#34892;&#36890;&#20449;&#65292;&#25509;&#25910;&#26469;&#33258;&#25968;&#25454;&#24211;&#25110;&#32773;&#20854;&#20182;&#26469;&#28304;&#30340;&#25968;&#25454;&#65292;&#24182;&#23558;&#20854;&#25554;&#20837;&#21040;&#27169;&#26495;&#20013;&#12290;\n\n&#25554;&#20214;&#31995;&#32479;&#65306;&#35768;&#22810;&#29616;&#20195;&#27169;&#26495;&#24341;&#25806;&#25552;&#20379;&#20102;&#19968;&#31181;&#25554;&#20214;&#26426;&#21046;&#65292;&#20801;&#35768;&#29992;&#25143;&#33258;&#23450;&#20041;&#27169;&#26495;&#30340;&#21151;&#33021;&#65292;&#22914;&#28155;&#21152;&#26032;&#30340;&#20989;&#25968;&#12289;&#20462;&#25913;&#29616;&#26377;&#30340;&#21151;&#33021;&#31561;&#12290;\n\n&#23433;&#20840;&#24615;&#65306;&#19968;&#20123;&#20808;&#36827;&#30340;&#27169;&#26495;&#24341;&#25806;&#36824;&#25552;&#20379;&#20102;&#20869;&#32622;&#30340;&#23433;&#20840;&#25514;&#26045;&#65292;&#20197;&#38450;&#27490;XSS&#65288;&#36328;&#31449;&#33050;&#26412;&#25915;&#20987;&#65289;&#21644;&#20854;&#20182;&#31867;&#22411;&#30340;&#28431;&#27934;&#12290;\n\n&#24615;&#33021;&#20248;&#21270;&#65306;&#20026;&#20102;&#25552;&#39640;&#21709;&#24212;&#36895;&#24230;&#65292;&#26576;&#20123;&#27169;&#26495;&#24341;&#25806;&#37319;&#29992;&#20102;&#19968;&#20123;&#25216;&#26415;&#25163;&#27573;&#65292;&#27604;&#22914;&#39044;&#32534;&#35793;&#12289;&#32531;&#23384;&#31561;&#21151;&#33021;&#12290;\n\n&#22269;&#38469;&#21270;\/&#26412;&#22320;&#21270;&#65306;&#24456;&#22810;&#27169;&#26495;&#24341;&#25806;&#37117;&#25903;&#25345;&#22269;&#38469;&#21270;&#21644;&#26412;&#22320;&#21270;&#30340;&#21151;&#33021;&#65292;&#20351;&#24471;&#29983;&#25104;&#30340;&#39029;&#38754;&#33021;&#22815;&#36866;&#24212;&#19981;&#21516;&#22269;&#23478;&#21644;&#22320;&#21306;&#30340;&#38656;&#27714;&#12290;\n\n&#31038;&#21306;&#21644;&#25903;&#25345;&#65306;&#27963;&#36291;&#30340;&#24320;&#28304;&#31038;&#21306;&#20026;&#27169;&#26495;&#24341;&#25806;&#25552;&#20379;&#20102;&#20016;&#23500;&#30340;&#25991;&#26723;&#12289;&#25945;&#31243;&#20197;&#21450;&#21508;&#31181;&#23454;&#29992;&#30340;&#25216;&#26415;&#25903;&#25345;&#36164;&#28304;&#12290;\n\n&#27169;&#26495;&#24341;&#25806;&#30340;&#24212;&#29992;&#38750;&#24120;&#24191;&#27867;&#65292;&#20174;&#31616;&#21333;&#30340;&#21338;&#23458;&#32593;&#31449;&#21040;&#22797;&#26434;&#30340;&#30005;&#23376;&#21830;&#21153;&#24179;&#21488;&#65292;&#20960;&#20046;&#27599;&#20010;&#39046;&#22495;&#37117;&#26377;&#20854;&#24212;&#29992;&#12290;&#23427;&#20204;&#26497;&#22823;&#22320;&#25552;&#39640;&#20102;&#24320;&#21457;&#25928;&#29575;&#65292;&#20943;&#23569;&#20102;&#25163;&#21160;&#32534;&#20889;&#22823;&#37327;HTML&#20195;&#30721;&#30340;&#24037;&#20316;&#37327;&#12290;<\/h2><p>Symfony &#20351;&#29992; Twig&#65292;&#19968;&#20010;&#24555;&#36895;&#12289;&#23433;&#20840;&#19988;&#28789;&#27963;&#30340;&#27169;&#26495;&#24341;&#25806;&#12290;Twig &#27169;&#26495;&#20197;&#31616;&#27905;&#26126;&#20102;&#30340;&#35821;&#27861;&#32534;&#20889;&#65306;<\/p><pre><code>{% extends 'base.html.twig' %}\n\n{% block body %}\n    &lt;h1&gt;Welcome to our application!&lt;\/h1&gt;\n{% endblock %}<\/code><\/pre><p>Laravel &#20351;&#29992; Blade&#65292;&#19968;&#20010;&#24378;&#22823;&#30340;&#19988;&#29992;&#25143;&#21451;&#22909;&#30340;&#27169;&#26495;&#24341;&#25806;&#65292;&#20801;&#35768;&#20320;&#22312;&#27169;&#26495;&#20013;&#20351;&#29992;&#32431; PHP &#20195;&#30721;&#65306;<\/p><pre><code>@extends('layout')\n\n@section('content')\n    &lt;h1&gt;Welcome to our website!&lt;\/h1&gt;\n@endsection<\/code><\/pre><h2>&#25968;&#25454;&#24211;&#36801;&#31227;&#21644;ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;<\/h2><p>Symfony &#21644; Laravel &#37117;&#20351;&#24471;&#25968;&#25454;&#24211;&#36801;&#31227;&#21464;&#24471;&#23481;&#26131;&#12290;&#22312; Symfony &#20013;&#65292;&#36890;&#24120;&#20351;&#29992; Doctrine ORM&#65292;&#36825;&#38656;&#35201;&#20026;&#25968;&#25454;&#24211;&#34920;&#21019;&#24314; PHP &#31867;&#12290;<\/p><pre><code>php bin\/console make:migration<\/code><\/pre><p>Laravel&#30340;Eloquent ORM&#22240;&#20854;&#31616;&#27905;&#24615;&#32780;&#22791;&#21463;&#31216;&#36190;&#65292;&#20351;&#24471;&#24320;&#21457;&#20154;&#21592;&#21487;&#20197;&#20351;&#29992;&#31616;&#21333;&#19988;&#34920;&#36798;&#21147;&#24378;&#30340;&#35821;&#27861;&#19982;&#25968;&#25454;&#24211;&#23545;&#35937;&#36827;&#34892;&#20132;&#20114;&#12290;&#22312;Laravel&#20013;&#65292;&#24744;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#21629;&#20196;&#36816;&#34892;&#36801;&#31227;&#65306;<\/p><pre><code>php artisan make:migration create_users_table<\/code><\/pre><h2>&#23433;&#20840;<\/h2><p>&#20004;&#32773;&#37117;&#25552;&#20379;&#20102;&#20016;&#23500;&#30340;&#23433;&#20840;&#21151;&#33021;&#65292;&#20294;Symfony&#22312;&#36825;&#26041;&#38754;&#30053;&#32988;&#19968;&#31609;&#65292;&#22240;&#20026;&#23427;&#25317;&#26377;&#20808;&#36827;&#30340;Voter&#31867;&#65292;&#20801;&#35768;&#22312;&#24212;&#29992;&#20013;&#23454;&#29616;&#26356;&#32454;&#33268;&#30340;&#23433;&#20840;&#25511;&#21046;&#12290;&#20363;&#22914;&#65306;<\/p><pre><code>public function voteOnAttribute($attribute, $subject, TokenInterface $token)\n{\n    \/\/ ... (check conditions and return true to grant permission) ...\n}<\/code><\/pre><p>Laravel&#31616;&#21270;&#20102;&#22823;&#22810;&#25968;&#24120;&#35265;&#30340;&#23433;&#20840;&#21151;&#33021;&#65292;&#22914;&#35748;&#35777;&#21644;&#25480;&#26435;&#12290;&#23427;&#33258;&#24102;&#36825;&#20123;&#21151;&#33021;&#65306;<\/p><pre><code>php artisan make:auth<\/code><\/pre><h2>&#24615;&#33021;&#21644;&#20248;&#21270;<\/h2><p>&#24615;&#33021;&#21487;&#33021;&#26159;&#36873;&#25321;Symfony&#36824;&#26159;Laravel&#30340;&#19968;&#20010;&#20851;&#38190;&#22240;&#32032;&#12290;&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#65292;Symfony&#30340;&#35774;&#35745;&#30446;&#26631;&#26159;&#22788;&#29702;&#22797;&#26434;&#30340;&#21518;&#31471;&#24320;&#21457;&#65292;&#22240;&#27492;&#21487;&#33021;&#22312;&#28041;&#21450;&#39640;&#32423;&#19994;&#21153;&#36923;&#36753;&#30340;&#39640;&#36127;&#36733;&#22330;&#26223;&#19979;&#26356;&#20248;&#21270;&#24615;&#33021;&#12290;<\/p><p>Laravel &#22312;&#24320;&#21457;&#36895;&#24230;&#21644;&#24212;&#29992;&#30340;&#31616;&#27905;&#24615;&#26041;&#38754;&#32473;&#20104;&#20102;&#39640;&#24230;&#30340;&#37325;&#35270;&#65292;&#20351;&#24471;&#20854;&#38750;&#24120;&#36866;&#21512;&#23567;&#22411;&#21040;&#20013;&#22411;&#35268;&#27169;&#30340;&#24212;&#29992;&#31243;&#24207;&#30340;&#24320;&#21457;&#12290;<\/p><h2>&#27979;&#35797;<\/h2><p>&#27809;&#26377;&#26694;&#26550;&#27604;&#36739;&#26159;&#23436;&#25972;&#30340;&#65292;&#24517;&#39035;&#35752;&#35770;&#27979;&#35797;&#33021;&#21147;&#12290;Symfony &#38468;&#24102;&#20102; PHPUnit &#38598;&#25104;&#65292;&#24182;&#25552;&#20379;&#20102;&#21151;&#33021;&#27979;&#35797;&#21253;&#12290;&#20320;&#21487;&#20197;&#20687;&#36825;&#26679;&#22312; Symfony &#20013;&#32534;&#20889;&#27979;&#35797;&#65306;<\/p><pre><code>public function testIndex()\n{\n    $client = static::createClient();\n    $client-&gt;request('GET', '\/');\n    $this-&gt;assertResponseIsSuccessful();\n    $this-&gt;assertSelectorTextContains('h1', 'Hello World');\n}<\/code><\/pre><p>Laravel &#22312;&#27979;&#35797;&#26041;&#38754;&#24182;&#19981;&#36874;&#33394;&#65292;&#23427;&#20869;&#32622;&#20102;&#23545;PHPUnit&#30340;&#20840;&#38754;&#25903;&#25345;&#65292;&#24182;&#25552;&#20379;&#20102;&#20351;&#29992;&#36215;&#26469;&#38750;&#24120;&#27969;&#30021;&#30340;&#20307;&#39564;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#22522;&#26412;&#30340; Laravel &#27979;&#35797;&#31034;&#20363;&#65306;<\/p><pre><code>public function testBasicTest()\n{\n    $response = $this-&gt;get('\/');\n\n    $response-&gt;assertStatus(200);\n}<\/code><\/pre><h2>&#31038;&#21306;&#21644;&#36164;&#28304;<\/h2><p>Symfony &#21644; Laravel &#37117;&#25317;&#26377;&#24378;&#22823;&#30340;&#21644;&#27963;&#36291;&#30340;&#31038;&#21306;&#12290;Laravel &#26377;&#19968;&#20010;&#29305;&#21035;&#27963;&#36291;&#30340;&#29983;&#24577;&#31995;&#32479;&#65292;&#25345;&#32493;&#20026;&#20854;&#22686;&#38271;&#25552;&#20379;&#21160;&#21147;&#65307;&#32780; Symfony &#21017;&#24471;&#30410;&#20110;&#19982;&#20225;&#19994;&#24320;&#21457;&#30340;&#20851;&#32852;&#12290;<\/p><h2>&#32467;&#35770;<\/h2><p>&#24635;&#32467;&#26469;&#35828;&#65292;Laravel&#21644;Symfony&#37117;&#26377;&#20854;&#20248;&#28857;&#65292;&#21487;&#20197;&#26681;&#25454;&#39033;&#30446;&#30340;&#20855;&#20307;&#38656;&#27714;&#36873;&#25321;&#21512;&#36866;&#30340;&#36873;&#25321;&#12290;Symfony&#30340;&#20005;&#26684;&#32467;&#26500;&#21644;&#21487;&#37325;&#29992;&#24615;&#20351;&#20854;&#36866;&#21512;&#38271;&#26399;&#21644;&#21457;&#23637;&#30340;&#39033;&#30446;&#65307;&#32780;Laravel&#30340;&#34920;&#36798;&#24615;&#21644;&#26131;&#29992;&#24615;&#21017;&#20351;&#20854;&#36866;&#29992;&#20110;&#24555;&#36895;&#24320;&#21457;&#21644;&#37096;&#32626;&#25152;&#26377;&#35268;&#27169;&#30340;&#24212;&#29992;&#31243;&#24207;&#12290;<\/p><p>&#26368;&#32456;&#65292;Symfony&#21644;Laravel&#30340;&#36873;&#25321;&#23558;&#21462;&#20915;&#20110;&#24744;&#30340;&#29305;&#23450;&#29992;&#20363;&#12289;&#22242;&#38431;&#19987;&#19994;&#30693;&#35782;&#20197;&#21450;&#39033;&#30446;&#38656;&#27714;&#12290;&#26126;&#26234;&#30340;&#20570;&#27861;&#26159;&#32771;&#34385;&#36825;&#20004;&#31181;&#26694;&#26550;&#30340;&#29305;&#24615;&#21644;&#23427;&#20204;&#26159;&#21542;&#31526;&#21512;&#24744;Web&#24212;&#29992;&#31243;&#24207;&#30340;&#30446;&#26631;&#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>Symfony&#21644;Laravel&#37117;&#26159;&#27969;&#34892;&#30340;PHP&#26694;&#26550;&#65292;&#23427;&#20204;&#21508;&#33258;&#26377;&#20854;&#29420;&#29305;&#30340;&#20248;&#28857;&#21644;&#36866;&#29992;&#22330;&#26223;&#12290;&#20197;&#19979;&#26159;&#23545;&#36825;&#20004;&#20010;&#26694;&#26550;&#30340;&#31616;&#35201;&#27604;&#36739;&#65306;<\/p>\n<h3>Symfony<\/h3>\n<ol>\n<li>\n<p><strong>&#21151;&#33021;&#24378;&#22823;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#20016;&#23500;&#30340;&#31532;&#19977;&#26041;&#24211;&#25903;&#25345;&#65292;&#22914;FOSUserBundle&#31561;&#12290;<\/li>\n<li>&#22810;&#35821;&#35328;&#25903;&#25345;&#65288;&#36890;&#36807;I18nBundle&#65289;&#12290;<\/li>\n<li>&#25903;&#25345;&#22810;&#31181;&#25968;&#25454;&#24211;&#31867;&#22411;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#27169;&#26495;&#24341;&#25806;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#37319;&#29992;&#20102;Twig&#20316;&#20026;&#40664;&#35748;&#30340;&#27169;&#26495;&#24341;&#25806;&#65292;&#26131;&#20110;&#23398;&#20064;&#21644;&#20351;&#29992;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#37197;&#32622;&#31995;&#32479;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#20351;&#29992;ConfigBundle&#36827;&#34892;&#37197;&#32622;&#31649;&#29702;&#65292;&#25552;&#39640;&#20102;&#28789;&#27963;&#24615;&#21644;&#23433;&#20840;&#24615;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Web&#24212;&#29992;&#26500;&#24314;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#25552;&#20379;&#20102;&#23436;&#25972;&#30340;Web&#24212;&#29992;&#31243;&#24207;&#24320;&#21457;&#24037;&#20855;&#38142;&#65292;&#21253;&#25324;&#36335;&#30001;&#25511;&#21046;&#22120;&#12289;&#35270;&#22270;&#35299;&#26512;&#22120;&#31561;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#31038;&#21306;&#27963;&#36291;&#24230;&#39640;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#31038;&#21306;&#35770;&#22363;&#21644;&#25216;&#26415;&#21338;&#23458;&#25552;&#20379;&#20102;&#22823;&#37327;&#30340;&#36164;&#28304;&#21644;&#25903;&#25345;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#36328;&#24179;&#21488;&#37096;&#32626;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#21487;&#20197;&#36731;&#26494;&#22320;&#22312;Linux&#12289;Windows&#25110;Mac OS X&#19978;&#36816;&#34892;&#12290;<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Laravel<\/h3>\n<ol>\n<li>\n<p><strong>&#24555;&#36895;&#24320;&#21457;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#26500;&#24314;&#36895;&#24230;&#36739;&#24555;&#65292;&#36866;&#21512;&#24555;&#36895;&#21407;&#22411;&#35774;&#35745;&#21644;&#36845;&#20195;&#24320;&#21457;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#25968;&#25454;&#39537;&#21160;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#25968;&#25454;&#34920;&#39537;&#21160;&#27169;&#24335;&#65292;&#36866;&#29992;&#20110;&#38656;&#35201;&#22823;&#37327;&#25968;&#25454;&#22788;&#29702;&#30340;&#24212;&#29992;&#31243;&#24207;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#20381;&#36182;&#27880;&#20837;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#20351;&#29992;&#20381;&#36182;&#27880;&#20837;&#26469;&#31616;&#21270;&#32452;&#20214;&#20043;&#38388;&#30340;&#20132;&#20114;&#65292;&#25552;&#39640;&#20195;&#30721;&#22797;&#29992;&#24615;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>ORM&#25903;&#25345;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#25903;&#25345;Eloquent ORM&#65292;&#31616;&#21270;&#20102;&#25968;&#25454;&#35775;&#38382;&#23618;&#30340;&#35774;&#35745;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#28789;&#27963;&#30340;&#21629;&#21517;&#31354;&#38388;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#20351;&#29992;namespace&#36827;&#34892;&#31867;&#21644;&#27169;&#22359;&#30340;&#21629;&#21517;&#65292;&#26377;&#21161;&#20110;&#20195;&#30721;&#32452;&#32455;&#21644;&#32500;&#25252;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#29983;&#24577;&#31995;&#32479;<\/strong>&#65306;<\/p>\n<ul>\n<li>Laravel&#25317;&#26377;&#24222;&#22823;&#30340;&#29983;&#24577;&#31995;&#32479;&#65292;&#25552;&#20379;&#20102;&#19968;&#31995;&#21015;&#20248;&#31168;&#30340;&#25193;&#23637;&#21644;&#25554;&#20214;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#26131;&#23398;&#26131;&#29992;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#25945;&#31243;&#21644;&#25991;&#26723;&#20016;&#23500;&#65292;&#23545;&#20110;&#26032;&#25163;&#24320;&#21457;&#32773;&#26469;&#35828;&#23481;&#26131;&#19978;&#25163;&#12290;<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>&#32467;&#35770;<\/h3>\n<p>&#36873;&#25321;&#21738;&#20010;&#26694;&#26550;&#21462;&#20915;&#20110;&#24744;&#30340;&#20855;&#20307;&#38656;&#27714;&#21644;&#20559;&#22909;&#12290;&#22914;&#26524;&#23545;&#22797;&#26434;&#21151;&#33021;&#26377;&#26356;&#39640;&#35201;&#27714;&#65292;&#24182;&#19988;&#24076;&#26395;&#20805;&#20998;&#21033;&#29992;&#24320;&#28304;&#31038;&#21306;&#25552;&#20379;&#30340;&#36164;&#28304;&#65292;&#37027;&#20040;Symfony&#21487;&#33021;&#20250;&#26159;&#26356;&#22909;&#30340;&#36873;&#25321;&#12290;&#32780;&#22914;&#26524;&#24744;&#36861;&#27714;&#30340;&#26159;&#24555;&#36895;&#24320;&#21457;&#12289;&#29087;&#24713;Eloquent ORM&#24182;&#24076;&#26395;&#19982;&#29616;&#26377;&#39033;&#30446;&#20445;&#25345;&#20860;&#23481;&#65292;Laravel&#21487;&#33021;&#26159;&#26356;&#22909;&#30340;&#36873;&#25321;&#12290;<\/p>\n<p>&#20363;&#22914;&#65292;&#22914;&#26524;&#24744;&#27491;&#22312;&#24320;&#21457;&#19968;&#20010;&#31038;&#20132;&#23186;&#20307;&#32593;&#31449;&#65292;&#37027;&#20040;Laravel&#21487;&#33021;&#26356;&#36866;&#21512;&#24744;&#65307;&#22914;&#26524;&#24744;&#27491;&#22312;&#21019;&#24314;&#19968;&#20010;&#22522;&#20110;&#29992;&#25143;&#20449;&#24687;&#31649;&#29702;&#31995;&#32479;&#65292;&#37027;&#20040;Symfony&#21487;&#33021;&#26356;&#21512;&#36866;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#20316;&#20026;AI&#21161;&#25163;&#65292;&#25105;&#19981;&#33021;&#23545;&#20004;&#20010;&#27969;&#34892;&#30340;PHP&#26694;&#038;#26550..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1043","my1js","type-my1js","status-publish","hentry","my1js2nav-symfony"],"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\/1043","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=1043"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1043"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1043"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}