Inhaltsverzeichnis
Key Takeaways
Für ein besseres Verständnis der Vorteile, die Sie während der Verwendung von Leiden genießen können, werden wir eine kleine Testanwendung einrichten. Nichts Kompliziert: Eine einfache Aufgabenliste-App.
leidenschafts
Datenvalidierung
Modell Autohydrat
Modellhaken
Beziehungen definieren (der leidenschaftliche Weg)
Mit einem großen Paket von Vorteilen (auch 126.000 Downloads und häufige Updates) ist es sehr schwierig, einen Grund zu finden, in Ihrer nächsten App keine Ardentität zu verwenden. Es ist für jede Art von Projekt geeignet und eine Erweiterung des Modells von Eloquent ist die vollständige Kompatibilität mit Laravel -Projekten.
häufig gestellte Fragen (FAQs) zu Laravel -Modellen
Was sind die wichtigsten Unterschiede zwischen Laravel 4.2, 5.0, 7.x und 10.x eloquent? In Laravel 4.2 war eloquent ein einfaches ORM (Objektrelationskartierung) mit grundlegenden CRUD-Operationen. Laravel 5.0 führte neue Funktionen wie mehrere Verbindungen, Soft -Delets und Event -Handhabung ein. Laravel 7.x brachte eifrige Belastung, Modellserialisierung und API -Ressourcen ein. Laravel 10.x hat die eloquent noch verbesserte Leistung, bessere Fehlerbehandlung und erweiterte Funktionen wie Batch -Operationen und Modellfabriken verbessert. Fügt Laravel ein selbstvalidierendes intelligentes eloquentes Modell hinzu. Es bietet eine automatische Validierung von Attributen, bevor sie gespeichert werden, wodurch die Menge an Validierungscode reduziert wird, die Sie in Ihren Controllern schreiben müssen. Ardent unterstützt auch eine verschachtelte Transaktionssicherheit von Modellen und ihre Beziehungen, wodurch komplexe Speichervorgänge vereinfacht werden. Datenbankverbindungen, indem Sie diese in Ihrer Datei config/Database.php definieren. In Ihrem beredten Modell können Sie dann angeben, welche Verbindung mit der $ Connection -Eigenschaft verwendet werden soll. Zum Beispiel protected $ connection = 'MySQL2'; Würde die Verbindung "MySQL2" verwenden. Dies kann die Leistung bei der Arbeit mit großen Datensätzen erheblich verbessern. Sie können die Methode mit () in eloquent verwenden, um anzugeben, welche Beziehungen zu eifrig belastet sind. 'Ein Datensatz, ohne sie tatsächlich aus der Datenbank zu entfernen. Stattdessen wird ein Zeitstempel deleted_at festgelegt. Sie können weiche Deletten in einem eloquenten Modell aktivieren, indem Sie das Merkmal von SoftDeletes verwenden und Ihrer Tabelle eine Deleted_at -Spalte hinzufügen. Bequeme Möglichkeit, neue Modellinstanzen zum Testen oder Aussaat Ihrer Datenbank zu generieren. Sie können eine Modellfabrik definieren, die die Standardattributwerte für Ihr Modell angibt, und dann die Fabrik zum Erstellen neuer Instanzen mit diesen Standardeinstellungen verwenden. > Ardent bietet eine SaveNested () -Methode, mit der ein Modell und alle zugehörigen Modelle in einer einzelnen Datenbank -Transaktion gespeichert werden. Dies stellt sicher, dass entweder alle Saves erfolgreich sind oder keine tun, um die Integrität Ihrer Daten aufrechtzuerhalten.
Wie verwende ich API -Ressourcen in Laravel eloquent? Sie können eine Ressourcenklasse erstellen, die definiert, wie das Modell transformiert werden soll, und dann Instanzen dieser Ressourcenklasse aus Ihren API -Routen zurückgeben. Die Attribute des Modells gegen eine Reihe von Regeln, die vor dem Speichern im Modell definiert sind. Wenn die Validierung fehlschlägt, wird der Speichervorgang abgebrochen und die Validierungsfehler sind über die METHOR () ()
Heim Backend-Entwicklung PHP-Tutorial LaSent: Laravel -Modelle auf Steroiden

LaSent: Laravel -Modelle auf Steroiden

Feb 19, 2025 am 09:07 AM

Ardent: Laravel Models on Steroids

LaSent: Laravel -Modelle auf Steroiden

Eines der (wenigen) Dinge, die ich an Laravel nicht mag, ist, dass Sie den Validierungscode nicht einfach von Ihrem Controller auf Ihre Modelle verschieben können. Wenn ich Software schreibe, wende ich gerne das Prinzip „Fat -Modelle, Skinny Controller“ an. Für mich ist es für mich also keine gute Sache, den Validierungscode in den Controller zu schreiben.

Um dies zu lösen, möchte ich leidenschaftlich vorstellen, ein großartiges Paket für Laravel 4. Um präzise zu sein, präsentiert sich Leidenschaft als "selbst validierende intelligente Modelle für Laravel Framework 4s eloquentes Orm". Mit anderen Worten: Genau das, was wir brauchen!

Wie Sie sich vorstellen können, ist es im Grunde eine Erweiterung der eloquenten Modellklasse. Dieses Paket verfügt über neue Funktionen, Dienstprogramme und Methoden, die sich der Eingabevalidierung und anderen kleinen Dingen widmen.

Key Takeaways

  • Verbesserte Validierung: Lerner vereinfacht den Validierungsprozess, indem Regeln direkt innerhalb des Modells definiert werden, die Organisation und Wartbarkeit verbessern, insbesondere in größeren Projekten.
  • Modellautomatikhydrat: Diese Funktion füllt automatisch Modellattribute aus dem Formulareingang, reduziert den Code des Boilerplate in Controllern und macht den Codebasis sauberer und effizienter.
  • Modellhaken: Ardent führt Modellhaken ein, die Methoden sind, die in bestimmten Lebenszyklusmomenten ausgeführt werden, z.
  • vereinfachte Beziehungen: Das Definieren von Modellbeziehungen wird mit leidenschaftlicher Struktur einer einfachen Arraystruktur ($ $ relationsData`) stärker gestoppt, wodurch die Komplexität des Beziehungsmanagements in Laravel -Modellen verringert wird.
  • redundante Daten automatisch läuten: Lerner kann unnötige Daten von Eingängen automatisch verwerfen, z. B. Bestätigungsfelder oder CSRF -Token, um sicherzustellen, dass nur relevante Daten verarbeitet und gespeichert werden.
  • Unsere Testanwendung

Für ein besseres Verständnis der Vorteile, die Sie während der Verwendung von Leiden genießen können, werden wir eine kleine Testanwendung einrichten. Nichts Kompliziert: Eine einfache Aufgabenliste-App.

Natürlich werde ich keine vollständige Anwendung implementieren: Ich möchte nur einige Prinzipien erklären, also werde ich einige Controller und Modelle machen - keine Ansichten. Danach werde ich den Code mit Ardent "

übersetzen".

Unsere Aufgabenliste zählt zwei verschiedene Entitäten:

  • Benutzer

      id
    • first_name
    • last_name
    • E -Mail
    • Passwort
  • Task

      id
    • Name
    • Status (fertig / nicht fertig)
Ein wirklich grundlegendes Projekt. Wenn Sie jedoch keinen Code schreiben möchten, machen Sie sich keine Sorgen: Ich habe bereits eine Migration vorbereitet, mit der Sie die Datenbank generieren können. Benutze es!

Erstellen Sie die Migrationsdatei mit dem Befehl

php artisan migrate:make todo_setup
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
und füllen Sie dann die Datei mit diesem Code aus:

php artisan migrate:make todo_setup
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt haben wir unsere Tische. Es ist Zeit, unsere Modelle zu erstellen. Sogar hier haben wir nur sehr wenige Zeilen zu schreiben. Hier ist das Benutzermodell (das ist auch das Standard).

<span><span><?php
</span></span><span>
</span><span>    <span>use Illuminate<span>\Database\Schema\Blueprint</span>;
</span></span><span>    <span>use Illuminate<span>\Database\Migrations\Migration</span>;
</span></span><span>
</span><span>    <span>class TodoSetup extends Migration {
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * Run the migrations.
</span></span><span><span>         *
</span></span><span><span>         * <span>@return <span>void</span>
</span></span></span><span><span>         */
</span></span><span>        <span>public function up()
</span></span><span>        <span>{
</span></span><span>            <span>Schema<span>::</span>create('users', function(Blueprint $table)
</span></span><span>            <span>{
</span></span><span>                <span>$table->increments('id')->unsigned();
</span></span><span>
</span><span>                <span>$table->string('first_name');
</span></span><span>                <span>$table->string('last_name');
</span></span><span>                <span>$table->string('email');
</span></span><span>                <span>$table->string('password', 60);
</span></span><span>
</span><span>                <span>$table->timestamps();
</span></span><span>            <span>});
</span></span><span>
</span><span>            <span>Schema<span>::</span>create('tasks', function(Blueprint $table)
</span></span><span>            <span>{
</span></span><span>                <span>$table->increments('id');
</span></span><span>
</span><span>                <span>$table->string('name');
</span></span><span>                <span>$table->boolean('status');
</span></span><span>
</span><span>                <span>$table->integer('user_id')->unsigned();
</span></span><span>
</span><span>                <span>$table->timestamps();
</span></span><span>
</span><span>                <span>$table->index('user_id');
</span></span><span>            <span>});
</span></span><span>        <span>}
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * Reverse the migrations.
</span></span><span><span>         *
</span></span><span><span>         * <span>@return <span>void</span>
</span></span></span><span><span>         */
</span></span><span>        <span>public function down()
</span></span><span>        <span>{
</span></span><span>            <span>Schema<span>::</span>dropIfExists('users');
</span></span><span>            <span>Schema<span>::</span>dropIfExists('tasks');
</span></span><span>        <span>}
</span></span><span>
</span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ich habe gerade die Aufgabenmethode hinzugefügt, um die Beziehung zum Aufgabenmodell zu beschreiben.

<span><span><?php
</span></span><span>
</span><span>    <span>use Illuminate<span>\Auth\UserTrait</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\UserInterface</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\Reminders\RemindableTrait</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\Reminders\RemindableInterface</span>;
</span></span><span>
</span><span>    <span>class User extends Eloquent implements UserInterface, RemindableInterface {
</span></span><span>
</span><span>        <span>use UserTrait, RemindableTrait;
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * The database table used by the model.
</span></span><span><span>         *
</span></span><span><span>         * <span>@var <span>string</span>
</span></span></span><span><span>         */
</span></span><span>        <span>protected $table = 'users';
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * The attributes excluded from the model's JSON form.
</span></span><span><span>         *
</span></span><span><span>         * <span>@var <span>array</span>
</span></span></span><span><span>         */
</span></span><span>        <span>protected $hidden = array('password', 'remember_token');
</span></span><span>
</span><span>        <span>public function tasks()
</span></span><span>        <span>{
</span></span><span>            <span>return $this->hasMany('Task');
</span></span><span>        <span>}
</span></span><span>
</span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir haben gerade unseren Ausgangspunkt gemacht. Von nun an werden wir gleich nach der Installation zwei verschiedene Situationen sehen: Erstens die „normale“ Version des Codes ohne leidenschaftlich. Gleich danach werden wir einen Vergleich mit der „verbesserten“ Version durchführen. Sie werden den Unterschied bemerken, vertrauen Sie mir.

Beginnen wir!

leidenschafts

installieren

Die Installation von Ardent ist mit dem Komponisten sehr einfach. Fügen Sie einfach die Abhängigkeit zur Datei composer.json Ihres Projekts hinzu.

<span><span><?php
</span></span><span>
</span><span>    <span>class Task extends <span>\Eloquent</span> {
</span></span><span>        <span>protected $fillable = [];
</span></span><span>
</span><span>        <span>public function user()
</span></span><span>        <span>{
</span></span><span>            <span>return $this->belongsTo('User');
</span></span><span>        <span>}
</span></span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dann müssen Sie nach dem Update nur die leidenschaftliche Klasse in Ihren Modellen wie SO erweitern:

<span>{
</span>        <span>"require": {
</span>            <span>"laravelbook/ardent": "2.*"
</span>        <span>}
</span>    <span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

… und du bist bereit zu gehen!

Datenvalidierung

Das erste, was zu tun ist, ist zu analysieren, wie leidenschaftlich unser Leben die Implementierung der Validierung erleichtert. Wir wissen bereits, wie man es mit Laravel macht. Erstellen wir ein klassisches Beispiel: Die Post -Methode, mit der Daten aus dem Formular eingehen.

In einer „normalen“ Situation würden wir so etwas machen:

<span><span><?php
</span></span><span>    <span>class User extends <span>\LaravelBook\Ardent\Ardent</span> {
</span></span><span>        <span>// model code here!
</span></span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
… was ist mit leidenschaftlich?

Mit leidenschaftlich ändern sich die Dinge ein wenig. Wie Sie sich leicht vorstellen können, werden die Validierungsregeln direkt in das Modell verschoben: Wir werden hier unsere „Restyle“ beginnen. Öffnen Sie also die Modelldatei und ändern Sie sie so:

<span><span><?php
</span></span><span>
</span><span>    <span>public function postSignup()
</span></span><span>    <span>{
</span></span><span>        <span>$rules = array(
</span></span><span>            <span>'first_name' => 'required',
</span></span><span>            <span>'last_name' => 'required',
</span></span><span>            <span>'email' => 'required|email|unique:users',
</span></span><span>            <span>'password' => 'required|min:8'
</span></span><span>        <span>);
</span></span><span>
</span><span>        <span>$messages = array(
</span></span><span>            <span>'first_name.required' => 'First name is required.',
</span></span><span>            <span>'last_name.required' => 'Last name is required.',
</span></span><span>            <span>'email.required' => 'Email is required.',
</span></span><span>            <span>'password.required' => 'Password is required.',
</span></span><span>
</span><span>            <span>'email.email' => 'Use a real email address!',
</span></span><span>            <span>'email.unique' => 'This email address already exists!',
</span></span><span>            <span>'password.min' => 'Password must be at least 8 character long.'
</span></span><span>        <span>);
</span></span><span>
</span><span>        <span>$validator = Validator<span>::</span>make(Input<span>::</span>all(), $rules, $messages);
</span></span><span>
</span><span>        <span>if($validator->fails())
</span></span><span>        <span>{
</span></span><span>            <span>return Redirect<span>::</span>to('user/signup')->with('errors', $validator->messages());
</span></span><span>        <span>}
</span></span><span>
</span><span>        <span>$user = new User;
</span></span><span>
</span><span>        <span>$user->first_name = Input<span>::</span>get('first_name');
</span></span><span>        <span>$user->last_name = Input<span>::</span>get('last_name');
</span></span><span>        <span>$user->email = Input<span>::</span>get('email');
</span></span><span>        <span>$user->password = Hash<span>::</span>make(Input<span>::</span>get('password'));
</span></span><span>
</span><span>        <span>if($user->save())
</span></span><span>        <span>{
</span></span><span>            <span>$status = 1;
</span></span><span>        <span>}
</span></span><span>        <span>else
</span></span><span>        <span>{
</span></span><span>            <span>$status = 0;
</span></span><span>        <span>}
</span></span><span>
</span><span>        <span>return Redirect<span>::</span>to('user/signup')->with('status', $status);
</span></span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Was ist passiert? Nicht viel: Wir haben die Basisklasse unseres Modells (von eloquent nach leidenschaftlich) geändert und haben uns die Validierungsregeln mit den benutzerdefinierten Fehlermeldungen (mit derselben Syntax, nur einer Kopie) bewegt.

.

Die Frage ist jetzt: Was werden wir in unserem Controller schreiben?

schauen wir es uns an:

<span><span><?php
</span></span><span>
</span><span>    <span>use Illuminate<span>\Auth\UserTrait</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\UserInterface</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\Reminders\RemindableTrait</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\Reminders\RemindableInterface</span>;
</span></span><span>
</span><span>    <span>class User extends <span>\LaravelBook\Ardent\Ardent</span> implements UserInterface, RemindableInterface {
</span></span><span>
</span><span>        <span>public static $rules = array(
</span></span><span>            <span>'first_name' => 'required',
</span></span><span>            <span>'last_name' => 'required',
</span></span><span>            <span>'email' => 'required|email|unique:users',
</span></span><span>            <span>'password' => 'required|min:8'
</span></span><span>        <span>);
</span></span><span>
</span><span>        <span>public static $customMessages = array(
</span></span><span>            <span>'first_name.required' => 'First name is required.',
</span></span><span>            <span>'last_name.required' => 'Last name is required.',
</span></span><span>            <span>'email.required' => 'Email is required.',
</span></span><span>            <span>'password.required' => 'Password is required.',
</span></span><span>
</span><span>            <span>'email.email' => 'Use a real email address!',
</span></span><span>            <span>'email.unique' => 'This email address already exists!',
</span></span><span>            <span>'password.min' => 'Password must be at least 8 character long.'
</span></span><span>        <span>);
</span></span><span>
</span><span>        <span>use UserTrait, RemindableTrait;
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * The database table used by the model.
</span></span><span><span>         *
</span></span><span><span>         * <span>@var <span>string</span>
</span></span></span><span><span>         */
</span></span><span>        <span>protected $table = 'users';
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * The attributes excluded from the model's JSON form.
</span></span><span><span>         *
</span></span><span><span>         * <span>@var <span>array</span>
</span></span></span><span><span>         */
</span></span><span>        <span>protected $hidden = array('password', 'remember_token');
</span></span><span>
</span><span>        <span>public function tasks()
</span></span><span>        <span>{
</span></span><span>            <span>return $this->hasMany('Task');
</span></span><span>        <span>}
</span></span><span>
</span><span>    <span>}</span></span>
Nach dem Login kopieren
Keine Validierungsanweisungen mehr hier. Sie alle verschwanden. Es handelt sich jedoch nicht nur um eine „Bewegung“: Die $ user-> Save () -Methode gibt nun falsch zurück, wenn es in der Validierungsphase einige Probleme gibt. Anschließend können Sie Fehler mit der $ user-> fehler ()-> All () Methode abrufen. Keine seltsamen Klassen: Das zurückgegebene Objekt ist ein klassischer MessageBag, den Sie möglicherweise bereits bei der Arbeit mit Laravel getroffen haben.

Wenn Sie es jedoch bevorzugen, können Sie auch die Eigenschaft $ user-> validationErrors verwenden. In diesem Fall oder wenn Sie feldspezifische Fehler abrufen möchten, verwenden Sie einfach $ user-> validationErrors-> get ('field_name').

Nun ist es sehr wahrscheinlich, dass Sie denken: „OK, aber was ist der wahre Vorteil, über weniger Codezeilen?“

Beginnen wir mit den wichtigsten: Bessere Code -Organisation bedeutet eine bessere Projektwartbarkeit. In einfachen Anwendungen können Sie dies nicht als Priorität empfinden, aber wenn es um größere Projekte geht, können die Dinge mit einer einzigen falschen Entscheidung leicht durcheinander gebracht werden. Lassen Sie mich ein Beispiel für eine reale Situation machen. Wir haben unsere fantastische To-Do-List-Anwendung entwickelt und sie wächst sehr schnell. Wir brauchen definitiv eine erholsame API für die mobile Anwendung. Wenn Sie den Controller auf „normale“ Weise verwenden, bedeutet dies eine weitere Anmelderoutine für die API. Zwei verschiedene Blöcke mit dem gleichen Code! Das ist nicht gut. Wo ist das gute alte trockene Prinzip (nicht wiederholen)?

Die beste Praxis wäre also eine Anmelde () -Methode in das Modell, das alles umgeht. Die Verwendung von leidenschaftlich bedeutet wirklich alles: Von der Validierung bis zum Speichernverfahren. Ohne sie konnten wir die erste Phase nicht erreichen.

Ein zweiter Vorteil ist praktischer: Modellautomatikhydrat. Lassen Sie es uns gemeinsam entdecken.

Modell Autohydrat

unsere postsignUp () -Methode zählt genau dreizehn Codezeilen. Auch wenn es schwierig erscheint, kann Ardent diese Zahl weiter senken. Schauen Sie sich dieses Beispiel an:

php artisan migrate:make todo_setup
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Keine Fehler hier. Sie verstehen wahrscheinlich schon, was passiert ist.

arrdent verfügt über eine Modell-Autohydrat-Funktion. Dies bedeutet, dass jedes Feld automatisch mit den Eingabefieldaten ausgefüllt wird, wenn Sie das Objekt erstellen und die Methode $ user-> save () aufrufen. Natürlich müssen Sie in jedem Feld entsprechend den richtigen Namen geben.

Dieser Code:

<span><span><?php
</span></span><span>
</span><span>    <span>use Illuminate<span>\Database\Schema\Blueprint</span>;
</span></span><span>    <span>use Illuminate<span>\Database\Migrations\Migration</span>;
</span></span><span>
</span><span>    <span>class TodoSetup extends Migration {
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * Run the migrations.
</span></span><span><span>         *
</span></span><span><span>         * <span>@return <span>void</span>
</span></span></span><span><span>         */
</span></span><span>        <span>public function up()
</span></span><span>        <span>{
</span></span><span>            <span>Schema<span>::</span>create('users', function(Blueprint $table)
</span></span><span>            <span>{
</span></span><span>                <span>$table->increments('id')->unsigned();
</span></span><span>
</span><span>                <span>$table->string('first_name');
</span></span><span>                <span>$table->string('last_name');
</span></span><span>                <span>$table->string('email');
</span></span><span>                <span>$table->string('password', 60);
</span></span><span>
</span><span>                <span>$table->timestamps();
</span></span><span>            <span>});
</span></span><span>
</span><span>            <span>Schema<span>::</span>create('tasks', function(Blueprint $table)
</span></span><span>            <span>{
</span></span><span>                <span>$table->increments('id');
</span></span><span>
</span><span>                <span>$table->string('name');
</span></span><span>                <span>$table->boolean('status');
</span></span><span>
</span><span>                <span>$table->integer('user_id')->unsigned();
</span></span><span>
</span><span>                <span>$table->timestamps();
</span></span><span>
</span><span>                <span>$table->index('user_id');
</span></span><span>            <span>});
</span></span><span>        <span>}
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * Reverse the migrations.
</span></span><span><span>         *
</span></span><span><span>         * <span>@return <span>void</span>
</span></span></span><span><span>         */
</span></span><span>        <span>public function down()
</span></span><span>        <span>{
</span></span><span>            <span>Schema<span>::</span>dropIfExists('users');
</span></span><span>            <span>Schema<span>::</span>dropIfExists('tasks');
</span></span><span>        <span>}
</span></span><span>
</span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

hat den gleichen Effekt wie

<span><span><?php
</span></span><span>
</span><span>    <span>use Illuminate<span>\Auth\UserTrait</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\UserInterface</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\Reminders\RemindableTrait</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\Reminders\RemindableInterface</span>;
</span></span><span>
</span><span>    <span>class User extends Eloquent implements UserInterface, RemindableInterface {
</span></span><span>
</span><span>        <span>use UserTrait, RemindableTrait;
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * The database table used by the model.
</span></span><span><span>         *
</span></span><span><span>         * <span>@var <span>string</span>
</span></span></span><span><span>         */
</span></span><span>        <span>protected $table = 'users';
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * The attributes excluded from the model's JSON form.
</span></span><span><span>         *
</span></span><span><span>         * <span>@var <span>array</span>
</span></span></span><span><span>         */
</span></span><span>        <span>protected $hidden = array('password', 'remember_token');
</span></span><span>
</span><span>        <span>public function tasks()
</span></span><span>        <span>{
</span></span><span>            <span>return $this->hasMany('Task');
</span></span><span>        <span>}
</span></span><span>
</span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Von dreiTheenen sind wir gerade für ein ganzes Anmeldeverfahren auf sieben gegangen.

Um diese Funktion zu verwenden, müssen Sie sie aktivieren. Wechseln Sie einfach den $ AutohydrateEntityFrominput in Ihrem Modell auf wahr, wie folgt:

<span><span><?php
</span></span><span>
</span><span>    <span>class Task extends <span>\Eloquent</span> {
</span></span><span>        <span>protected $fillable = [];
</span></span><span>
</span><span>        <span>public function user()
</span></span><span>        <span>{
</span></span><span>            <span>return $this->belongsTo('User');
</span></span><span>        <span>}
</span></span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

fertig!

Sie haben auch oft einige redundante Daten, die Sie für die Geschäftslogik nicht benötigen. Denken Sie an _ Confirmationsfelder oder die CSRF -Token. Nun, wir können sie mit dem $ autopurgeredundantattributes -Eigentum des Modells verwerfen. Schalten Sie es nach wie vor auf true.

<span>{
</span>        <span>"require": {
</span>            <span>"laravelbook/ardent": "2.*"
</span>        <span>}
</span>    <span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt ist die Prozedur sauberer als zuvor.

Modellhaken

Ein weiteres, erwähnenswertes Merkmal ist die Einführung von Modellhaken. Sie sind im Wesentlichen eine Liste von Methoden, die, wenn sie implementiert werden, in bestimmten Ausführungsmomenten aufgerufen werden. Um ein Beispiel zu erstellen, wird die Methode AfterUpdate () vor jedem Update () -Anruf aufgerufen. Die Methode vorbevalidat () wird vor jeder Validierung aufgerufen, usw.

Hier ist eine Liste all dieser Methoden:

  • Berecreate ()
  • Aftercreate ()
  • Beforesave ()
  • AfterSave ()
  • vorupdate ()
  • AfterUpdate ()
  • beorteelete ()
  • AfterDelete ()
  • vorValidate ()
  • Aftervalidat ()

Ein klassisches Beispiel könnte eine Datenausarbeitung vor dem Speicherverfahren sein. So wie folgt:

php artisan migrate:make todo_setup
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Jede "Vorher" -Methode hat einen booleschen Rückgabewert. Wenn wahr, wird die folgende Operation normal ausgeführt. Wenn die Methode false zurückgibt, wird die Operation gestoppt. In der obigen Methode haben wir eine Schnecke (und füllten das richtige Feld) mit der Methode Beforesave () direkt nach der Validierung erzeugt.

Es gibt auch einen bestimmten Tipp über Beforesave () und Aftersave (): Sie können sie zur Laufzeit deklarieren. Schauen Sie:

<span><span><?php
</span></span><span>
</span><span>    <span>use Illuminate<span>\Database\Schema\Blueprint</span>;
</span></span><span>    <span>use Illuminate<span>\Database\Migrations\Migration</span>;
</span></span><span>
</span><span>    <span>class TodoSetup extends Migration {
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * Run the migrations.
</span></span><span><span>         *
</span></span><span><span>         * <span>@return <span>void</span>
</span></span></span><span><span>         */
</span></span><span>        <span>public function up()
</span></span><span>        <span>{
</span></span><span>            <span>Schema<span>::</span>create('users', function(Blueprint $table)
</span></span><span>            <span>{
</span></span><span>                <span>$table->increments('id')->unsigned();
</span></span><span>
</span><span>                <span>$table->string('first_name');
</span></span><span>                <span>$table->string('last_name');
</span></span><span>                <span>$table->string('email');
</span></span><span>                <span>$table->string('password', 60);
</span></span><span>
</span><span>                <span>$table->timestamps();
</span></span><span>            <span>});
</span></span><span>
</span><span>            <span>Schema<span>::</span>create('tasks', function(Blueprint $table)
</span></span><span>            <span>{
</span></span><span>                <span>$table->increments('id');
</span></span><span>
</span><span>                <span>$table->string('name');
</span></span><span>                <span>$table->boolean('status');
</span></span><span>
</span><span>                <span>$table->integer('user_id')->unsigned();
</span></span><span>
</span><span>                <span>$table->timestamps();
</span></span><span>
</span><span>                <span>$table->index('user_id');
</span></span><span>            <span>});
</span></span><span>        <span>}
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * Reverse the migrations.
</span></span><span><span>         *
</span></span><span><span>         * <span>@return <span>void</span>
</span></span></span><span><span>         */
</span></span><span>        <span>public function down()
</span></span><span>        <span>{
</span></span><span>            <span>Schema<span>::</span>dropIfExists('users');
</span></span><span>            <span>Schema<span>::</span>dropIfExists('tasks');
</span></span><span>        <span>}
</span></span><span>
</span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Überlegen wir uns über einige mögliche Verwendungen dieser Methoden in unserer Anwendung.

Vielleicht ein Beforesave (), um mit Passwort zu handeln?

<span><span><?php
</span></span><span>
</span><span>    <span>use Illuminate<span>\Auth\UserTrait</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\UserInterface</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\Reminders\RemindableTrait</span>;
</span></span><span>    <span>use Illuminate<span>\Auth\Reminders\RemindableInterface</span>;
</span></span><span>
</span><span>    <span>class User extends Eloquent implements UserInterface, RemindableInterface {
</span></span><span>
</span><span>        <span>use UserTrait, RemindableTrait;
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * The database table used by the model.
</span></span><span><span>         *
</span></span><span><span>         * <span>@var <span>string</span>
</span></span></span><span><span>         */
</span></span><span>        <span>protected $table = 'users';
</span></span><span>
</span><span>        <span>/**
</span></span><span><span>         * The attributes excluded from the model's JSON form.
</span></span><span><span>         *
</span></span><span><span>         * <span>@var <span>array</span>
</span></span></span><span><span>         */
</span></span><span>        <span>protected $hidden = array('password', 'remember_token');
</span></span><span>
</span><span>        <span>public function tasks()
</span></span><span>        <span>{
</span></span><span>            <span>return $this->hasMany('Task');
</span></span><span>        <span>}
</span></span><span>
</span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

oder ein Reinigungshaken kurz vor der Löschung der Benutzer?

<span><span><?php
</span></span><span>
</span><span>    <span>class Task extends <span>\Eloquent</span> {
</span></span><span>        <span>protected $fillable = [];
</span></span><span>
</span><span>        <span>public function user()
</span></span><span>        <span>{
</span></span><span>            <span>return $this->belongsTo('User');
</span></span><span>        <span>}
</span></span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Es gibt viele Möglichkeiten.

Beziehungen definieren (der leidenschaftliche Weg)

Mit leidenschaftlich können Sie auch Beziehungen auf kürzere Weise definieren als zuvor. Lassen Sie uns sehen, wie wir unsere Beziehungen zwischen Modellen tatsächlich definieren: Das folgende Beispiel zeigt die Methode der Aufgaben () im Benutzermodell.

<span>{
</span>        <span>"require": {
</span>            <span>"laravelbook/ardent": "2.*"
</span>        <span>}
</span>    <span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden von Ardent zum Definieren von Beziehungen bedeutet, ein einfaches Array zu definieren, das als $ relationsData bezeichnet wird.

<span><span><?php
</span></span><span>    <span>class User extends <span>\LaravelBook\Ardent\Ardent</span> {
</span></span><span>        <span>// model code here!
</span></span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren

Dies hat genau den gleichen Effekt. Leiden verwendet die gleiche Namenskonvention, um Namen und Methoden zu binden, ohne sie einzeln schreiben zu müssen.

Es gibt jedoch viele Anpassungen, die Sie durchführen können:

<span><span><?php
</span></span><span>
</span><span>    <span>public function postSignup()
</span></span><span>    <span>{
</span></span><span>        <span>$rules = array(
</span></span><span>            <span>'first_name' => 'required',
</span></span><span>            <span>'last_name' => 'required',
</span></span><span>            <span>'email' => 'required|email|unique:users',
</span></span><span>            <span>'password' => 'required|min:8'
</span></span><span>        <span>);
</span></span><span>
</span><span>        <span>$messages = array(
</span></span><span>            <span>'first_name.required' => 'First name is required.',
</span></span><span>            <span>'last_name.required' => 'Last name is required.',
</span></span><span>            <span>'email.required' => 'Email is required.',
</span></span><span>            <span>'password.required' => 'Password is required.',
</span></span><span>
</span><span>            <span>'email.email' => 'Use a real email address!',
</span></span><span>            <span>'email.unique' => 'This email address already exists!',
</span></span><span>            <span>'password.min' => 'Password must be at least 8 character long.'
</span></span><span>        <span>);
</span></span><span>
</span><span>        <span>$validator = Validator<span>::</span>make(Input<span>::</span>all(), $rules, $messages);
</span></span><span>
</span><span>        <span>if($validator->fails())
</span></span><span>        <span>{
</span></span><span>            <span>return Redirect<span>::</span>to('user/signup')->with('errors', $validator->messages());
</span></span><span>        <span>}
</span></span><span>
</span><span>        <span>$user = new User;
</span></span><span>
</span><span>        <span>$user->first_name = Input<span>::</span>get('first_name');
</span></span><span>        <span>$user->last_name = Input<span>::</span>get('last_name');
</span></span><span>        <span>$user->email = Input<span>::</span>get('email');
</span></span><span>        <span>$user->password = Hash<span>::</span>make(Input<span>::</span>get('password'));
</span></span><span>
</span><span>        <span>if($user->save())
</span></span><span>        <span>{
</span></span><span>            <span>$status = 1;
</span></span><span>        <span>}
</span></span><span>        <span>else
</span></span><span>        <span>{
</span></span><span>            <span>$status = 0;
</span></span><span>        <span>}
</span></span><span>
</span><span>        <span>return Redirect<span>::</span>to('user/signup')->with('status', $status);
</span></span><span>    <span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren

Jedes Element in $ relationsData hat einen Schlüssel (ja, den Methodennamen der Beziehung) und ein Array mit einigen Parametern.

  • Der erste Parameter (ohne Schlüssel, es ist nur der erste) beschreibt den Beziehungstyp (Hasone, Hasmany, gehört
  • Der zweite Parameter (ohne Schlüssel, es ist nur das zweite) definiert das Zielmodell der aktuellen Beziehung;
  • Weitere Parameter haben keine bestimmte Position, sondern einen Schlüssel. Sie könnten:
  • sein
      ForeignKey: Optional, verwendet für Hasone, Hasmany, hingohrsto und
    • Tabelle, andere Key, Zeitstempel und Pivotkeys: Optional, für die Hingehörigkeit verwendet;
    • Name, Typ und ID: Verwendet mit Morphto, Morphone und Morpany;
  • Schlussfolgerung

Mit einem großen Paket von Vorteilen (auch 126.000 Downloads und häufige Updates) ist es sehr schwierig, einen Grund zu finden, in Ihrer nächsten App keine Ardentität zu verwenden. Es ist für jede Art von Projekt geeignet und eine Erweiterung des Modells von Eloquent ist die vollständige Kompatibilität mit Laravel -Projekten.

Ich empfehle es auf jeden Fall. Tust du? Hast du es ausprobiert? Lassen Sie uns in den Kommentaren unten wissen!

häufig gestellte Fragen (FAQs) zu Laravel -Modellen

Was sind die wichtigsten Unterschiede zwischen Laravel 4.2, 5.0, 7.x und 10.x eloquent? In Laravel 4.2 war eloquent ein einfaches ORM (Objektrelationskartierung) mit grundlegenden CRUD-Operationen. Laravel 5.0 führte neue Funktionen wie mehrere Verbindungen, Soft -Delets und Event -Handhabung ein. Laravel 7.x brachte eifrige Belastung, Modellserialisierung und API -Ressourcen ein. Laravel 10.x hat die eloquent noch verbesserte Leistung, bessere Fehlerbehandlung und erweiterte Funktionen wie Batch -Operationen und Modellfabriken verbessert. Fügt Laravel ein selbstvalidierendes intelligentes eloquentes Modell hinzu. Es bietet eine automatische Validierung von Attributen, bevor sie gespeichert werden, wodurch die Menge an Validierungscode reduziert wird, die Sie in Ihren Controllern schreiben müssen. Ardent unterstützt auch eine verschachtelte Transaktionssicherheit von Modellen und ihre Beziehungen, wodurch komplexe Speichervorgänge vereinfacht werden. Datenbankverbindungen, indem Sie diese in Ihrer Datei config/Database.php definieren. In Ihrem beredten Modell können Sie dann angeben, welche Verbindung mit der $ Connection -Eigenschaft verwendet werden soll. Zum Beispiel protected $ connection = 'MySQL2'; Würde die Verbindung "MySQL2" verwenden. Dies kann die Leistung bei der Arbeit mit großen Datensätzen erheblich verbessern. Sie können die Methode mit () in eloquent verwenden, um anzugeben, welche Beziehungen zu eifrig belastet sind. 'Ein Datensatz, ohne sie tatsächlich aus der Datenbank zu entfernen. Stattdessen wird ein Zeitstempel deleted_at festgelegt. Sie können weiche Deletten in einem eloquenten Modell aktivieren, indem Sie das Merkmal von SoftDeletes verwenden und Ihrer Tabelle eine Deleted_at -Spalte hinzufügen. Bequeme Möglichkeit, neue Modellinstanzen zum Testen oder Aussaat Ihrer Datenbank zu generieren. Sie können eine Modellfabrik definieren, die die Standardattributwerte für Ihr Modell angibt, und dann die Fabrik zum Erstellen neuer Instanzen mit diesen Standardeinstellungen verwenden. > Ardent bietet eine SaveNested () -Methode, mit der ein Modell und alle zugehörigen Modelle in einer einzelnen Datenbank -Transaktion gespeichert werden. Dies stellt sicher, dass entweder alle Saves erfolgreich sind oder keine tun, um die Integrität Ihrer Daten aufrechtzuerhalten.

Wie verwende ich API -Ressourcen in Laravel eloquent? Sie können eine Ressourcenklasse erstellen, die definiert, wie das Modell transformiert werden soll, und dann Instanzen dieser Ressourcenklasse aus Ihren API -Routen zurückgeben. Die Attribute des Modells gegen eine Reihe von Regeln, die vor dem Speichern im Modell definiert sind. Wenn die Validierung fehlschlägt, wird der Speichervorgang abgebrochen und die Validierungsfehler sind über die METHOR () ()

Was ist der Zweck der BOOT () -Methode in Laravel eloquent? () Methode in Laravel Eloquent ist ein Lebenszyklushaken, der aufgerufen wird, wenn das Modell „gestoot“ ist, d. H. In den Speicher geladen wird. Sie können diese Methode in Ihrem Modell überschreiben, um ein Verhalten hinzuzufügen, das auftreten sollte, wenn das Modell gestartet wird, z. B. die Registrierung von Ereignishörern oder das Anpassen der Konfiguration des Modells.

Das obige ist der detaillierte Inhalt vonLaSent: Laravel -Modelle auf Steroiden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1666
14
PHP-Tutorial
1273
29
C#-Tutorial
1252
24
Erklären Sie sicheres Kennwort -Hashing in PHP (z. B. password_hash, password_verify). Warum nicht MD5 oder SHA1 verwenden? Erklären Sie sicheres Kennwort -Hashing in PHP (z. B. password_hash, password_verify). Warum nicht MD5 oder SHA1 verwenden? Apr 17, 2025 am 12:06 AM

In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP und Python: Vergleich von zwei beliebten Programmiersprachen PHP und Python: Vergleich von zwei beliebten Programmiersprachen Apr 14, 2025 am 12:13 AM

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

PHP in Aktion: Beispiele und Anwendungen in realer Welt PHP in Aktion: Beispiele und Anwendungen in realer Welt Apr 14, 2025 am 12:19 AM

PHP wird in E-Commerce, Content Management Systems und API-Entwicklung häufig verwendet. 1) E-Commerce: Wird für die Einkaufswagenfunktion und Zahlungsabwicklung verwendet. 2) Content -Management -System: Wird für die Erzeugung der dynamischen Inhalte und die Benutzerverwaltung verwendet. 3) API -Entwicklung: Wird für die erholsame API -Entwicklung und die API -Sicherheit verwendet. Durch Leistungsoptimierung und Best Practices werden die Effizienz und Wartbarkeit von PHP -Anwendungen verbessert.

PHP: Eine Schlüsselsprache für die Webentwicklung PHP: Eine Schlüsselsprache für die Webentwicklung Apr 13, 2025 am 12:08 AM

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen? Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen? Apr 17, 2025 am 12:25 AM

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Die dauerhafte Relevanz von PHP: Ist es noch am Leben? Die dauerhafte Relevanz von PHP: Ist es noch am Leben? Apr 14, 2025 am 12:12 AM

PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.

PHP und Python: Code Beispiele und Vergleich PHP und Python: Code Beispiele und Vergleich Apr 15, 2025 am 12:07 AM

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

Php gegen andere Sprachen: Ein Vergleich Php gegen andere Sprachen: Ein Vergleich Apr 13, 2025 am 12:19 AM

PHP eignet sich für die Webentwicklung, insbesondere für die schnelle Entwicklung und Verarbeitung dynamischer Inhalte, ist jedoch nicht gut in Anwendungen auf Datenwissenschaft und Unternehmensebene. Im Vergleich zu Python hat PHP mehr Vorteile in der Webentwicklung, ist aber nicht so gut wie Python im Bereich der Datenwissenschaft. Im Vergleich zu Java wird PHP in Anwendungen auf Unternehmensebene schlechter, ist jedoch flexibler in der Webentwicklung. Im Vergleich zu JavaScript ist PHP in der Back-End-Entwicklung präziser, ist jedoch in der Front-End-Entwicklung nicht so gut wie JavaScript.

See all articles