Table des matières
Laravel Repository 模式,laravelrepository
Repository 模式
使用 repositories
1.创建 Repository 文件夹
2: 创建相应的 Interface
3:创建对应的 Repository
4:创建后端服务提供
5:更新你的Providers Array
6:最后使用依赖注入更新你的controller
Maison développement back-end tutoriel php Laravel Repository 模式,laravelrepository_PHP教程

Laravel Repository 模式,laravelrepository_PHP教程

Jul 13, 2016 am 09:44 AM
sql语句

Laravel Repository 模式,laravelrepository

Repository 模式

为了保持代码的整洁性和可读性,使用Repository Pattern 是非常有用的。事实上,我们也不必仅仅为了使用这个特别的设计模式去使用Laravel,然而在下面的场景下,我们将使用OOP的框架Laravel 去展示如何使用repositories 使我们的Controller层不再那么啰嗦、更加解耦和易读。下面让我们更深入的研究一下。

不使用 repositories

其实使用Repositories并不是必要的,在你的应用中你完全可以不使用这个设计模式的前提下完成绝大多数的事情,然而随着时间的推移你可能把自己陷入一个死角,比如不选择使用Repositories会使你的应用测试很不容易,(swapping out implementations)具体的实现将会变的很复杂,下面我们看一个例子。
HousesController.php

<?php
    class HousesController extends BaseController {
        public function index()
        {
            $houses = House::all();
            return View::make('houses.index',compact('houses'));
        }    
        
        public function create()
        {
            return View::make('houses.create');
        }
        public function show($id)
        {
            $house = House::find($id);
            return View::make('houses.show',compact('house'));
        }
    }
Copier après la connexion

  

这是一个很典型的一段代码使用Eloquent和数据库交互,这段代码工作的很正常,但是controller层对于Eloquent而言将是紧耦合的。在此我们可以注入一个repository创建一个解耦类型的代码版本,这个解耦的版本代码可以使后续程序的具体实现更加简单。

使用 repositories

其实完成整个repository模式需要相当多的步骤,但是一旦你完成几次就会自然而然变成了一种习惯了,下面我们将详细介绍每一步。

1.创建 Repository 文件夹

首先我们需要在app文件夹创建自己Repository 文件夹repositories,然后文件夹的每一个文件都要设置相应的命名空间。

2: 创建相应的 Interface

第二步创建对应的接口,其决定着我们的repository类必须要实现的相关方法,如下例所示,在此再次强调的是命名空间一定要记得加上。
HouseRepositoryInterface.php

<?php namespace App\Repositories;

interface HouseRepositoryInterface {
    public function selectAll();
    
    public function find($id);
}
Copier après la connexion

  

3:创建对应的 Repository

现在我们可以创建我们repository类 来给我们干活了,在这个类文件中我们可以把我们的绝大多数的数据库查询都放进去,不论多么复杂。如下面的例子
DbHouseRepository.php

<?php namespace App\Repositories;

use House;

class DbHouseRepository implements HouseRepositoryInterface {
    
    public function selectAll()
    {
        return House::all();
    }

    public function find($id)
    {
        return House::find($id);
    }
}
Copier après la connexion

  

<code><span class="php"><span class="hljs-preprocessor"> </span></span></code>
Copier après la connexion
Copier après la connexion

4:创建后端服务提供

首先你需要理解所谓服务提供,请参考手册服务提供者
BackendServiceProvider.php

<?php namespace App\Repositories;

use IlluminateSupportSeriveProvider;

class BackSerivePrivider extends ServiceProvider {

    public function register()
    {
        $this->app->bind('App\Repositories\HouseRepositoryInterface', 'App\Repositories\DbHouseRepository');
    }
}
Copier après la connexion

  

<code><span class="php"><span class="hljs-preprocessor"> </span></span></code>
Copier après la connexion
Copier après la connexion

当然你也可以新建一个文件夹主要放我们的provider相关文件。
上面一段代码主要说的是,当你在controller层使用类型提示HouseRepositoryInterface,我们知道你将会使用DbHouseRepository.

5:更新你的Providers Array

其实在上面的代码中,我们已经实现了一个依赖注入,但如果我们要使用在此我们是需要手动去写的,为了更为方面,我们需要增加这个providers 到app/config/app.php 中的 providers数组里面,只需要在最后加上App\Repositories\BackendServiceProvider::class,

6:最后使用依赖注入更新你的controller

当我们完成上面的那些内容之后,我们在Controller只需要简单的调用方法代替之前的复杂的数据库调用,如下面内容:
HousesController.php

<?php 

use App\repositories\HouseRepositoryInterface;

class HousesController extends BaseController {
    protected $house;
    
    public function __construct(HouseRepositoryInterface $house)
    {
        $this->house = $house;
    }


    public function index()
    {
        $houses = $this->house->selectAll();

        return View::make('houses.index', compact('houses'));
        
    }


    public function create()
    {
        return View::make('houses.create');
    }


    public function show($id)
    {
        $house = $this->house->find($id);
        
        return View::make('houses.show', compact('house'));

    }
}
Copier après la connexion

  

  这样 整个模式的转换就完成了

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1048733.htmlTechArticleLaravel Repository 模式,laravelrepository Repository 模式 为了保持代码的整洁性和可读性,使用 Repository Pattern 是非常有用的。事实上,我们也不必...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser la fonction iif dans Excel Comment utiliser la fonction iif dans Excel Mar 20, 2024 pm 06:10 PM

La plupart des utilisateurs utilisent Excel pour traiter les données des tableaux. En fait, Excel dispose également d'un programme VBA, à l'exception des experts, peu d'utilisateurs ont utilisé cette fonction. La fonction iif est souvent utilisée lors de l'écriture en VBA. les fonctions des fonctions sont similaires. Laissez-moi vous présenter l'utilisation de la fonction iif. Il existe des fonctions iif dans les instructions SQL et du code VBA dans Excel. La fonction iif est similaire à la fonction IF dans la feuille de calcul Excel. Elle effectue un jugement de valeur vrai et faux et renvoie des résultats différents en fonction des valeurs vraies et fausses calculées logiquement. L'utilisation de la fonction SI est (condition, oui, non). Instruction IF et fonction IIF dans VBA La première instruction IF est une instruction de contrôle qui peut exécuter différentes instructions selon les conditions.

Comment interroger les journaux de la base de données Oracle Comment interroger les journaux de la base de données Oracle Apr 07, 2024 pm 04:51 PM

Les informations des journaux de la base de données Oracle peuvent être interrogées par les méthodes suivantes : utilisez les instructions SQL pour effectuer une requête à partir de la vue v$log ; utilisez l'outil LogMiner pour analyser les fichiers journaux ; utilisez la commande ALTER SYSTEM pour afficher l'état du fichier journal actuel ; Commande TRACE pour afficher des informations sur des événements spécifiques ; utilisez les outils système d'opérations pour consulter la fin du fichier journal.

Comment utiliser l'instruction SQL pour interroger la structure de stockage de la base de données MySQL Comment utiliser l'instruction SQL pour interroger la structure de stockage de la base de données MySQL Apr 14, 2024 pm 07:45 PM

Pour interroger la structure de stockage de la base de données MySQL, vous pouvez utiliser l'instruction SQL suivante : SHOW CREATE TABLE nom_table ; cette instruction renverra la définition de la colonne et les informations sur les options de la table, y compris le nom de la colonne, le type de données, les contraintes et les propriétés générales de la table. , tels que le moteur de stockage et le jeu de caractères.

Comment exporter les données interrogées dans Navicat Comment exporter les données interrogées dans Navicat Apr 24, 2024 am 04:15 AM

Exporter les résultats de la requête dans Navicat : exécuter la requête. Cliquez avec le bouton droit sur les résultats de la requête et sélectionnez Exporter les données. Sélectionnez le format d'exportation selon vos besoins : CSV : le séparateur de champ est une virgule. Excel : inclut les en-têtes de tableau, au format Excel. Script SQL : contient les instructions SQL utilisées pour recréer les résultats de la requête. Sélectionnez les options d'exportation (telles que l'encodage, les sauts de ligne). Sélectionnez l'emplacement d'exportation et le nom du fichier. Cliquez sur "Exporter" pour lancer l'exportation.

Comment résoudre l'échec d'initialisation de la base de données MySQL Comment résoudre l'échec d'initialisation de la base de données MySQL Apr 14, 2024 pm 07:12 PM

Pour résoudre le problème d'échec de l'initialisation de la base de données MySQL, procédez comme suit : Vérifiez les autorisations et assurez-vous que vous utilisez un utilisateur disposant des autorisations appropriées. Si la base de données existe déjà, supprimez-la ou choisissez un autre nom. Si la table existe déjà, supprimez-la ou choisissez un autre nom. Vérifiez l'instruction SQL pour les erreurs de syntaxe. Confirmez que le serveur MySQL est en cours d'exécution et connectable. Vérifiez que vous utilisez le bon numéro de port. Vérifiez le fichier journal MySQL ou l'outil de recherche de codes d'erreur pour plus de détails sur d'autres erreurs.

Comment exécuter une instruction SQL dans une base de données MySQL Comment exécuter une instruction SQL dans une base de données MySQL Apr 14, 2024 pm 07:48 PM

Les instructions SQL MySQL peuvent être exécutées comme suit : À l'aide de la CLI MySQL (interface de ligne de commande) : connectez-vous à la base de données et saisissez l'instruction SQL. Utilisation de MySQL Workbench : démarrez l'application, connectez-vous à la base de données et exécutez les instructions. Utilisez un langage de programmation : importez la bibliothèque de connexions MySQL, créez une connexion à la base de données et exécutez des instructions. Utilisez d'autres outils tels que DB Browser pour SQLite : téléchargez et installez l'application, ouvrez le fichier de base de données et exécutez les instructions.

Traitement des transactions MySQL : la différence entre la soumission automatique et la soumission manuelle Traitement des transactions MySQL : la différence entre la soumission automatique et la soumission manuelle Mar 16, 2024 am 11:33 AM

Traitement des transactions MySQL : la différence entre la soumission automatique et la soumission manuelle Dans la base de données MySQL, une transaction est un ensemble d'instructions SQL soit toutes les exécutions réussissent, soit toutes les exécutions échouent, garantissant la cohérence et l'intégrité des données. Dans MySQL, les transactions peuvent être divisées en soumission automatique et soumission manuelle. La différence réside dans le moment de la soumission de la transaction et dans l'étendue du contrôle sur la transaction. Ce qui suit présentera en détail la différence entre la soumission automatique et la soumission manuelle, et donnera des exemples de code spécifiques à illustrer. 1. Soumettre automatiquement dans MySQL, s'il n'est pas affiché

Comparaison des similitudes et des différences entre MySQL et PL/SQL Comparaison des similitudes et des différences entre MySQL et PL/SQL Mar 16, 2024 am 11:15 AM

MySQL et PL/SQL sont deux systèmes de gestion de bases de données différents, représentant respectivement les caractéristiques des bases de données relationnelles et des langages procéduraux. Cet article comparera les similitudes et les différences entre MySQL et PL/SQL, avec des exemples de code spécifiques à illustrer. MySQL est un système de gestion de bases de données relationnelles populaire qui utilise le langage de requête structuré (SQL) pour gérer et exploiter des bases de données. PL/SQL est un langage procédural unique à la base de données Oracle et est utilisé pour écrire des objets de base de données tels que des procédures stockées, des déclencheurs et des fonctions. même

See all articles