Laravel Repository 模式,laravelrepository_PHP教程
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')); } }
这是一个很典型的一段代码使用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); }
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); } }
<code><span class="php"><span class="hljs-preprocessor"> </span></span></code>
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'); } }
<code><span class="php"><span class="hljs-preprocessor"> </span></span></code>
当然你也可以新建一个文件夹主要放我们的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')); } }
这样 整个模式的转换就完成了

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds



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.

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.

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.

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.

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.

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 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é

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
