In Laravel ist ein Controller (Controller) eine Klasse, die zur Implementierung bestimmter Funktionen verwendet wird; der Controller kann zugeh?rige Anforderungsverarbeitungslogik in einer separaten Klasse kombinieren. Einige Methoden werden im Controller gespeichert, um bestimmte Funktionen zu implementieren. Der Controller wird über Routing aufgerufen, und Rückruffunktionen werden nicht mehr im Verzeichnis ?app/Http/Controllers“ gespeichert.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Laravel 6-Version, DELL G3-Computer.
Einführung in den Controller
1. Was ist ein Controller?
Um die gesamte in Form von Abschlüssen in der Routendatei definierte Anforderungsverarbeitungslogik zu ersetzen, m?chten Sie m?glicherweise Steuerklassen verwenden, um diese Verhaltensweisen zu organisieren. Controller k?nnen zugeh?rige Anforderungsverarbeitungslogik in einer separaten Klasse gruppieren.
Controller ist eine Klasse, die zum Implementieren bestimmter Funktionen verwendet wird. Der Controller wird über Routing aufgerufen und es werden keine Rückruffunktionen mehr verwendet.
2. Wo steht der Controller?
App/Http/Controller platzieren den Controller
Controller.php ist die übergeordnete Klassendatei, andere Controller k?nnen erben
3 Wie benenne ich die Controller-Datei?
Hump-Hump-Controller-Name + Controller.php
Zum Beispiel AddDataController.php LoginController.php
4 Wie schreibe ich die Controller-Struktur?
Automatisch durch handwerkliche Befehle generiert, zum Beispiel: Stellen Sie sicher, dass im Stammverzeichnis des aktuellen Projekts die Befehlszeileneingabe erfolgt:
php artisan make:controller TestController
Automatische Vervollst?ndigung des Strukturcodes,
namespace App\Http\Controller; use Illuminate\Http\Request; class TestController extends Controller{ // }
Basis-Controller
Controller definieren
Nachfolgend finden Sie ein Beispiel für eine grundlegende Controller-Klasse. Es ist zu beachten, dass dieser Controller den Basiscontroller von Laravel
erbt. Diese Klasse von Controllern bietet einige praktische Methoden, wie zum Beispiel die Methode middleware
, mit der Middleware zum Controller-Verhalten hinzugefügt werden kann: Laravel
的基礎(chǔ)控制器。該類控制器提供了一些便利的方法,比如 middleware
方法,該方法可以為控制器行為添加中間件:
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\User; class UserController extends Controller { /** * 顯示指定用戶的簡(jiǎn)介 * * @param int $id * @return \Illuminate\View\View */ public function show($id) { return view('user.profile', ['user' => User::findOrFail($id)]); } }
你可以像這樣定義一個(gè)指向控制器行為的路由:
use App\Http\Controllers\UserController; Route::get('user/{id}', [UserController::class, 'show']);
當(dāng)一個(gè)請(qǐng)求與指定路由的 URI 匹配時(shí), UserController
控制器中的 show
方法將會(huì)執(zhí)行。路由參數(shù)也將會(huì)被傳遞給該方法。
技巧:控制器并不是 必需 繼承基礎(chǔ)類。如果控制器沒(méi)有繼承基礎(chǔ)類,你將無(wú)法使用一些便捷的功能,比如
middleware
,validate
,和dispatch
方法。
單行為控制器
如果你想要定義一個(gè)只處理單個(gè)行為的控制器,你可以在控制器中放置一個(gè) __invoke
方法:
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\User; class ShowProfile extends Controller { /** * 顯示指定用戶的簡(jiǎn)介 * * @param int $id * @return \Illuminate\View\View */ public function __invoke($id) { return view('user.profile', ['user' => User::findOrFail($id)]); } }
當(dāng)注冊(cè)單個(gè)行為控制器的路由時(shí)不需要指名方法:
use App\Http\Controllers\ShowProfile; Route::get('user/{id}', ShowProfile::class);
你可以通過(guò) Artisan 命令工具里的 make:controller
命令中的 --invokable
選項(xiàng)來(lái)生成一個(gè)可調(diào)用的控制器
php artisan make:controller ShowProfile --invokable
技巧:可以使用 stub 定制 自定義控制器模板
控制器中間件
中間件 可以在路由文件中分配給控制器的路由:
Route::get('profile', [UserController::class, 'show'])->middleware('auth');
然而,在控制器的構(gòu)造函數(shù)中指定中間件更為方便。使用控制器構(gòu)造函數(shù)中的 middleware
方法,可以輕松地將中間件分配給控制器。你甚至可以將中間件限制為只在控制器中的某些方法生效:
class UserController extends Controller { /** * 實(shí)例化一個(gè)新的控制器實(shí)例 * * @return void */ public function __construct() { $this->middleware('auth'); $this->middleware('log')->only('index'); $this->middleware('subscribed')->except('store'); } }
同時(shí),控制器還允許你使用一個(gè)閉包來(lái)注冊(cè)中間件。這為不定義整個(gè)中間件類的情況下為單個(gè)控制器定義中間件提供了一種便捷的方法:
$this->middleware(function ($request, $next) { // ... return $next($request); });
技巧:你可以將中間件分配給控制器操作的一個(gè)子集。然而,它可能表明你的控制器正在變得復(fù)雜。建議你將控制器拆分為多個(gè)較小的控制器。
資源型控制器
Laravel 的資源路由通過(guò)單行代碼即可將典型的「CURD (增刪改查)」路由分配給控制器。例如,你希望創(chuàng)建一個(gè)控制器來(lái)處理保存 “照片” 應(yīng)用的所有 HTTP 請(qǐng)求。使用 Artisan 命令 make:controller
可以快速創(chuàng)建這樣一個(gè)控制器:
php artisan make:controller PhotoController --resource
這個(gè)命令將會(huì)生成一個(gè)控制器 app/Http/Controllers/PhotoController.php
。 其中包括每個(gè)可用資源操作的方法。
接下來(lái),你可以給控制器注冊(cè)一個(gè)資源路由:
Route::resource('photos', PhotoController::class);
這個(gè)單一的路由聲明創(chuàng)建了多個(gè)路由來(lái)處理資源上的各種行為。生成的控制器為每個(gè)行為保留了方法,包括了關(guān)于處理 HTTP 動(dòng)詞和 URLs 的聲明注釋。
你可以通過(guò)將數(shù)組傳參到 resources
Route::resources([ 'photos' => PhotoController::class, 'posts' => PostController::class, ]);Sie k?nnen eine Route definieren, die auf das Controller-Verhalten zeigt, wie folgt:
php artisan make:controller PhotoController --resource --model=PhotoWenn eine Anfrage mit dem URI der angegebenen Route übereinstimmt, wird die Methode
show
im Controller UserController
ausgeführt. An diese Methode werden auch Routenparameter übergeben. Tipp: Controller sind nicht ??erforderlich??, um von Basisklassen zu erben. Wenn ein Controller nicht von einer Basisklasse erbt, k?nnen Sie einige praktische Funktionen wie
middleware
, validate
und dispatch</ nicht nutzen. Code> Methoden. ????????Single Behavior Controller????????Wenn Sie einen Controller definieren m?chten, der nur ein einzelnes Verhalten verarbeitet, k?nnen Sie eine <code>__invoke
-Methode im Controller platzieren: ??Route::resource('photos', PhotoController::class)->only([ 'index', 'show' ]); Route::resource('photos', PhotoController::class)->except([ 'create', 'store', 'update', 'destroy' ]);??Beim Registrieren eines einzelnen Verhaltens Beim Weiterleiten des Verhaltenscontrollers muss die Methode nicht angegeben werden: ??
Route::apiResource('photos', PhotoController::class);??Sie k?nnen eine aufrufbare Methode über die Option
--invokable
im Befehl make:controller
generieren das Artisan-Befehlstool namens Controller ??Route::apiResources([ 'photos' => PhotoController::class, 'posts' => PostController::class, ]);???? Tipps: Sie k?nnen Stub-Anpassung verwenden, um die Controller-Vorlage anzupassen ???????? in der Mitte des Controllers ??????Middleware kann der Route des Controllers in der Routendatei zugeordnet werden: ??
php artisan make:controller API/PhotoController --api?? Im Controller ist es jedoch bequemer, Middleware im Konstruktor anzugeben. Middleware kann einem Controller einfach mithilfe der Methode
middleware
im Konstruktor des Controllers zugewiesen werden. Sie k?nnen Middleware sogar so einschr?nken, dass sie nur auf bestimmte Methoden im Controller wirksam wird: ??Route::resource('photos.comments', PhotoCommentController::class);?? Gleichzeitig erm?glicht Ihnen der Controller auch, Middleware mithilfe eines Abschlusses zu registrieren. Dies bietet eine bequeme M?glichkeit, Middleware für einen einzelnen Controller zu definieren, ohne die gesamte Middleware-Klasse zu definieren: ??
/photos/{photo}/comments/{comment}???? Tipp: Sie k?nnen Middleware einer Teilmenge von Controller-Aktionen zuweisen. Es kann jedoch ein Zeichen dafür sein, dass Ihre Steuerung komplexer wird. Es wird empfohlen, den Controller in mehrere kleinere Controller aufzuteilen. ????????Ressourcen-Controller????????Laravels Ressourcenrouting kann Controllern mit einer einzigen Codezeile typische ?CURD“-Routen (Erstellen, L?schen, ?ndern, überprüfen) zuweisen. Sie m?chten beispielsweise einen Controller erstellen, der alle HTTP-Anfragen für die App ?Fotos speichern“ verarbeitet. Verwenden Sie den Artisan-Befehl
make:controller
, um schnell einen solchen Controller zu erstellen: ??Route::resource('photos.comments', PhotoCommentController::class)->scoped([ 'comment' => 'slug', ]);??Dieser Befehl generiert einen Controller
app/Http/Controllers/PhotoController.php
. Dazu geh?ren Methoden für jeden verfügbaren Ressourcenvorgang. ????Als n?chstes k?nnen Sie eine Ressourcenroute beim Controller registrieren: ??/photos/{photo}/comments/{comment:slug}??Diese einzelne Routendeklaration erstellt mehrere Routen, um verschiedene Verhaltensweisen auf der Ressource zu verarbeiten. Der generierte Controller beh?lt Methoden für jede Aktion bei, einschlie?lich deklarativer Anmerkungen für die Verarbeitung von HTTP-Verben und URLs. ????Sie k?nnen mehrere Ressourcen-Controller gleichzeitig erstellen, indem Sie Array-Parameter an die Methode
resources
übergeben: ??Route::resource('photos.comments', CommentController::class)->shallow();????Ressourcen-Controller-Operationsverarbeitung??????
Verb | URI | Action | Route Name |
---|---|---|---|
GET | /photos | index | photos.index |
GET | /photos/create | create | photos.create |
POST | /photos | store | photos.store |
GET | /photos/{photo} | show | photos.show |
GET | /photos/{photo}/edit | edit | photos.edit |
PUT/PATCH | /photos/{photo} | update | photos.update |
DELETE | /photos/{photo} | destroy | photos.destroy |
指定資源模型
如果你使用了路由模型綁定,并且想在資源控制器的方法中使用類型提示,你可以在生成控制器的時(shí)候使用 --model
選項(xiàng):
php artisan make:controller PhotoController --resource --model=Photo
部分資源路由
當(dāng)聲明資源路由時(shí),你可以指定控制器處理的部分行為,而不是所有默認(rèn)的行為:
Route::resource('photos', PhotoController::class)->only([ 'index', 'show' ]); Route::resource('photos', PhotoController::class)->except([ 'create', 'store', 'update', 'destroy' ]);
API 資源路由
當(dāng)聲明用于 APIs 的資源路由時(shí),通常需要排除顯示 HTML 模板的路由(如 create
和 edit
)。為了方便起見(jiàn),你可以使用 apiResource
方法自動(dòng)排除這兩個(gè)路由:
Route::apiResource('photos', PhotoController::class);
你也可以傳遞一個(gè)數(shù)組給 apiResources
方法來(lái)同時(shí)注冊(cè)多個(gè) API 資源控制器:
Route::apiResources([ 'photos' => PhotoController::class, 'posts' => PostController::class, ]);
要快速生成不包含 create
或 edit
方法的用于開(kāi)發(fā)接口的資源控制器,請(qǐng)?jiān)趫?zhí)行 make:controller 命令時(shí)使用 --api
參數(shù):
php artisan make:controller API/PhotoController --api
嵌套資源
有時(shí)可能需要定義一個(gè)嵌套的資源型路由。例如,照片資源可能被添加了多個(gè)評(píng)論。那么可以在路由中使用 “點(diǎn)” 符號(hào)來(lái)聲明資源型控制器:
Route::resource('photos.comments', PhotoCommentController::class);
該路由會(huì)注冊(cè)一個(gè)嵌套資源,可以使用如下 URI
訪問(wèn):
/photos/{photo}/comments/{comment}
限定嵌套資源的范圍
Laravel 的 隱式模型綁定 特性可以自動(dòng)限定嵌套綁定的范圍,因此已解析的子模型會(huì)自動(dòng)屬于父模型。定義嵌套路由時(shí),使用 scoped
方法,可以開(kāi)啟自動(dòng)范圍限定,也可以指定 Laravel 應(yīng)該按照哪個(gè)字段檢索子模型資源
Route::resource('photos.comments', PhotoCommentController::class)->scoped([ 'comment' => 'slug', ]);
這個(gè)路由會(huì)注冊(cè)一個(gè)限定范圍的嵌套資源路由,可以像下面這樣來(lái)訪問(wèn):
/photos/{photo}/comments/{comment:slug}
淺層嵌套
通常,并不完全需要在 URI
中同時(shí)擁有父 ID 和子 ID ,因?yàn)樽?ID 已經(jīng)是唯一的標(biāo)識(shí)符。當(dāng)使用唯一標(biāo)識(shí)符(如自動(dòng)遞增的主鍵)來(lái)標(biāo)識(shí) URI
中的模型時(shí),可以選擇使用「淺嵌套」的方式定義路由:
Route::resource('photos.comments', CommentController::class)->shallow();
上面的路由定義方式會(huì)定義以下路由:
HTTP 方式 | URI | 行為 | 路由名稱 |
---|---|---|---|
GET | /photos/{photo}/comments | index | photos.comments.index |
GET | /photos/{photo}/comments/create | create | photos.comments.create |
POST | /photos/{photo}/comments | store | photos.comments.store |
GET | /comments/{comment} | show | comments.show |
GET | /comments/{comment}/edit | edit | comments.edit |
PUT/PATCH | /comments/{comment} | update | comments.update |
DELETE | /comments/{comment} | destroy | comments.destroy |
命名資源路由
默認(rèn)情況下,所有的資源控制器行為都有一個(gè)路由名稱。你可以傳入 names
數(shù)組來(lái)覆蓋這些名稱:
Route::resource('photos', PhotoController::class)->names([ 'create' => 'photos.build' ]);
命名資源路由參數(shù)
默認(rèn)情況下,Route::resource
會(huì)根據(jù)資源名稱的「單數(shù)」形式創(chuàng)建資源路由的路由參數(shù)。你可以在選項(xiàng)數(shù)組中傳入 parameters
參數(shù)來(lái)輕松地覆蓋每個(gè)資源。parameters
數(shù)組應(yīng)該是資源名稱和參數(shù)名稱的關(guān)聯(lián)數(shù)組:
Route::resource('users', AdminUserController::class)->parameters([ 'users' => 'admin_user' ]);
上例將會(huì)為資源的 show
路由生成如下的 URI :
/users/{admin_user}
限定范圍的資源路由
有時(shí),在定義資源路由時(shí)隱式綁定了多個(gè) Eloquent 模型,你希望限定第二個(gè) Eloquent 模型必須為第一個(gè) Eloquent 模型的子模型。例如,考慮這樣一個(gè)場(chǎng)景,通過(guò) slug 檢索某個(gè)特殊用戶的一篇文章:
use App\Http\Controllers\PostsController;Route::resource('users.posts', PostsController::class)->scoped();
你可以通過(guò)給 scoped
方法傳遞一個(gè)數(shù)組來(lái)覆蓋默認(rèn)的模型路由鍵:
use App\Http\Controllers\PostsController;Route::resource('users.posts', PostsController::class)->scoped([ 'post' => 'slug', ]);
當(dāng)使用一個(gè)自定義鍵的隱式綁定作為嵌套路由參數(shù)時(shí),Laravel 會(huì)自動(dòng)限定查詢范圍,按照約定的命名方式去父類中查找關(guān)聯(lián)方法,然后檢索到對(duì)應(yīng)的嵌套模型。在這種情況下,將假定 User
模型有一個(gè)叫 posts
(路由參數(shù)名的復(fù)數(shù))的關(guān)聯(lián)方法,通過(guò)這個(gè)方法可以檢索到 Post
模型。
本地化資源 URI
默認(rèn)情況下,Route::resource
將會(huì)用英文動(dòng)詞創(chuàng)建資源 URI。如果需要自定義 create
和 edit
行為的動(dòng)作名,可以在 AppServiceProvider
的 boot
中使用 Route::resourceVerbs
方法實(shí)現(xiàn):
use Illuminate\Support\Facades\Route; /** * 引導(dǎo)任何應(yīng)用服務(wù)。 * * @return void */ public function boot() { Route::resourceVerbs([ 'create' => 'crear', 'edit' => 'editar', ]); }
動(dòng)作被自定義后,像 Route::resource('fotos', 'PhotoController')
這樣注冊(cè)的資源路由將會(huì)產(chǎn)生如下的 URI:
/fotos/crear /fotos/{foto}/editar
補(bǔ)充資源控制器
如果您需要增加額外的路由到默認(rèn)的資源路由之中,您需要在 Route::resource
前定義它們;否則, resource
方法定義的路由可能會(huì)無(wú)意間優(yōu)先于您定義的路由:
Route::get('photos/popular', [PhotoController::class, 'popular']); Route::resource('photos', PhotoController::class);
技巧:記得保持您的控制器的專一性。如果您需要典型的資源操作以外的方法,請(qǐng)考慮將您的控制器分割為兩個(gè)更小的控制器。
依賴注入 & 控制器
構(gòu)造注入
Laravel 服務(wù)容器 被用于解析所有的 Laravel 控制器。因此,您可以在控制器的構(gòu)造函數(shù)中使用類型提示需要的依賴項(xiàng)。聲明的解析會(huì)自動(dòng)解析并注入到控制器實(shí)例中去:
<?php namespace App\Http\Controllers; use App\Repositories\UserRepository; class UserController extends Controller { /** * 用戶 repository 實(shí)例。 */ protected $users; /** * 創(chuàng)建一個(gè)新的控制器實(shí)例。 * * @param UserRepository $users * @return void */ public function __construct(UserRepository $users) { $this->users = $users; } }
您亦可類型提示 Laravel 契約 ,只要它能夠被解析。取決于您的應(yīng)用,注入依賴到控制器可能會(huì)提供更好的可測(cè)試性。
方法注入
除了構(gòu)造器注入以外,您亦可在控制器方法中類型提示依賴。最常見(jiàn)的用法便是注入 Illuminate\Http\Request
到您的控制器方法中:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { /** * 保存一個(gè)新用戶。 * * @param Request $request * @return Response */ public function store(Request $request) { $name = $request->name; // } }
如果您的控制器方法要從路由參數(shù)中獲取輸入內(nèi)容,請(qǐng)?jiān)谀囊蕾図?xiàng)之后列出您的路由參數(shù)。例如,您可以像下方這樣定義路由:
Route::put('user/{id}', [UserController::class, 'update']);
如下所示,您依然可以類型提示 Illuminate\Http\Request
并通過(guò)定義您的控制器方法訪問(wèn) id
參數(shù):
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { /** * 修改指定的用戶。 * * @param Request $request * @param string $id * @return Response */ public function update(Request $request, $id) { // } }
路由緩存
如果您的應(yīng)用僅使用了基于路由的控制器,您應(yīng)該充分利用 Laravel 路由緩存。使用路由緩存將會(huì)大幅降低您的應(yīng)用路由的注冊(cè)時(shí)間。有時(shí),您的路由注冊(cè)的速度可能會(huì)提高 100 倍。要生成路由緩存,僅需執(zhí)行 route:cache
Artisan 命令:
php artisan route:cache
在運(yùn)行該命令后,每次請(qǐng)求將會(huì)加載您緩存的路由文件。請(qǐng)記住,您每次添加新路由后均需要生成新的路由緩存。因此,您應(yīng)該在項(xiàng)目部署時(shí)才運(yùn)行 route:cache
命令。
您亦可使用 route:clear
來(lái)清除路由緩存:
php artisan route:clear
【相關(guān)推薦:laravel視頻教程】
Das obige ist der detaillierte Inhalt vonWas ist ein Laravel-Controller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vermeiden Sie N 1 Abfrageprobleme, reduzieren Sie die Anzahl der Datenbankabfragen, indem Sie die zugeh?rigen Daten im Voraus laden. 2. W?hlen Sie nur die erforderlichen Felder aus, um das Laden vollst?ndiger Entit?ten zu vermeiden, um Speicher und Bandbreite zu sparen. 3.. Verwenden Sie Cache-Strategien vernünftigerweise, z. 4. Optimieren Sie den Lebenszyklus der Entit?t und rufen Sie Clear () regelm??ig an, um den Speicher freizugeben, um den Speicherüberlauf zu verhindern. 5. Stellen Sie sicher, dass der Datenbankindex die generierten SQL -Anweisungen existiert und analysiert, um ineffiziente Abfragen zu vermeiden. 6. Deaktivieren Sie die automatische ?nderungsverfolgung in Szenarien, in denen ?nderungen nicht erforderlich sind, und verwenden Sie Arrays oder Leichtgewichtsmodi, um die Leistung zu verbessern. Die korrekte Verwendung von ORM erfordert die Kombination der SQL -überwachung, -gespeicherung, der Stapelverarbeitung und der geeigneten Optimierung, um die Anwendungsleistung zu gew?hrleisten und gleichzeitig die Entwicklungseffizienz beizubehalten.

Die Datei "Settings.JSON" befindet sich auf dem Pfad auf Benutzerebene oder Arbeitsbereichsebene und wird verwendet, um die VSCODE-Einstellungen anzupassen. 1. Benutzer-Level-Pfad: Windows ist C: \ Benutzer \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS is /users//library/applicationsupport/code/user/settings.json, Linux is /home/.config/code/usser/setings.json; 2. Pfad auf Arbeitsbereichsebene: .VSCODE/Einstellungen im Projekt Root Directory

ReadOmpropertiesinphp8.2canonlyBeSignedoncinstructororatDeklarationandCannotBemodifiedAfterward, durchsetzungsvermutbarkeitatheluagelevel.2.ToachedevimmiMmutability, WrapMutabletypesLikearrayObjecustomimmutablecollections

Erstellen Sie Referenzen Tabelle, um Empfehlungsbeziehungen zu erfassen, einschlie?lich Empfehlungen, Empfehlungen, Empfehlungscodes und Nutzungszeit; 2. Definieren Sie die Beziehungen zwischen H?rern und Hasmany im Benutzermodell, um Empfehlungsdaten zu verwalten. 3. Erstellen Sie bei der Registrierung einen eindeutigen Empfehlungscode (kann durch Modellereignisse implementiert werden). 4. Erfassen Sie den Empfehlungscode, indem Sie die Parameter w?hrend der Registrierung abfragen, nach überprüfung eine Empfehlungsbeziehung aufstellen und die Selbstverantwortung verhindern. 5. den Belohnungsmechanismus ausl?sen, wenn empfohlene Benutzer das angegebene Verhalten (Abonnementauftrag) abschlie?en; 6. Generieren Sie gemeinsame Empfehlungsverbindungen und verwenden Sie URLs mit Laravel Signature, um die Sicherheit zu verbessern. 7. Empfehlungsstatistiken auf dem Dashboard anzeigen, z. B. die Gesamtzahl der Empfehlungen und konvertierten Zahlen; Es ist notwendig, sicherzustellen, dass Datenbankbeschr?nkungen, Sitzungen oder Cookies bestehen bleiben.

Verwenden Sie zun?chst JavaScript, um die Einstellungen für Benutzersysteme und lokal gespeicherte Themeneinstellungen zu erhalten und das Seitenthema zu initialisieren. 1. Die HTML -Struktur enth?lt eine Schaltfl?che zum Ausl?sen von Themenwechsel. 2. CSS verwendet: root, um helle Themenvariablen zu definieren, .Dark-Mode-Klasse definiert dunkle Themenvariablen und wendet diese Variablen über var () an. 3.. JavaScript erkennt bevorzuge-farbige Scheme und liest LocalStorage, um das ursprüngliche Thema zu bestimmen. 4. Schalten Sie die Dark-Mode-Klasse im HTML-Element beim Klicken auf die Schaltfl?che und speichern Sie den aktuellen Status vor LocalStorage. 5. Alle Farb?nderungen werden mit einer übergangsanimation von 0,3 Sekunden begleitet, um den Benutzer zu verbessern

Verwenden Sie Leistungsanalyse-Tools, um Engp?sse zu lokalisieren, VisualVM oder JProfiler in der Entwicklung und Testphase zu verwenden und Async-Profiler in der Produktionsumgebung Priorit?t zu geben. 2. Reduzieren Sie die Objekterstellung, verwenden Sie Objekte wieder, verwenden Sie StringBuilder, um String -Splei?en zu ersetzen und entsprechende GC -Strategien auszuw?hlen. 3.. Optimieren Sie die Auswahl der Sammlung, w?hlen Sie die Anfangskapazit?t gem?? der Szene aus; V. 5. Tune JVM-Parameter, festlegen, angemessene Haufengr??e und Müllsammler mit geringer Latenz einstellen und GC-Protokolle aktivieren; 6. Vermeiden Sie die Reflexion auf Codeebene, ersetzen Sie Wrapper -Klassen durch Grundtypen, Verz?gerungsinitialisierung und verwenden Sie endgültige und statische. 7. Kontinuierliche Leistungstest und überwachung, kombiniert mit JMH

Erstellen Sie ein neues Laravel -Projekt und starten Sie den Service. 2. Generieren Sie das Modell, die Migration und den Controller und führen Sie die Migration aus; 3. Definieren Sie die erholsame Route in Routen/api.php; V. 5. Verwenden Sie Postbote oder Curl, um die API -Funktion zu testen. 6. Fügen Sie optional die API -Authentifizierung durch Heiligtum hinzu; Erhalten Sie schlie?lich eine klare Struktur, vollst?ndig und erweiterbar Laravelrestapi, geeignet für praktische Anwendungen.

Eloquentorm ist das integrierte Relational Mapping-System von Laravel. Sie betreibt die Datenbank über PHP -Syntax anstelle von nativem SQL, wodurch der Code pr?gnanter und leicht zu warten ist. 1. Jede Datentabelle entspricht einer Modellklasse, und jeder Datensatz existiert als Modellinstanz. 2. übernehmen Sie den aktiven Datensatzmodus, und die Modellinstanz kann selbst gespeichert oder aktualisiert werden. 3.. Support -Stapelzuweisung und das $ fillbare Attribut müssen im Modell definiert werden, um die Sicherheit zu gew?hrleisten. 4. Bieten Sie eine starke Beziehungsunterstützung wie eins zu eins, eins zu viele, viele zu viele usw., und Sie k?nnen über Methodenaufrufe auf die zugeh?rigen Daten zugreifen. 5. Integrierter Abfragekonstruktor, wo OrderBy und andere Methoden als Ketten bezeichnet werden k?nnen, um Abfragen zu erstellen; 6. Unterstützen Sie Zubeh?r und Modifikatoren, die die Nummer beim Erhalten oder Einlegen von Attributen formatieren k?nnen.
