Comment utiliser le moteur de modèles Laravel Blade avec un projet PHP Pure Vanilla ?

WBOY
Libérer: 2024-07-18 11:30:48
original
877 Les gens l'ont consulté

How to Use Laravel Blade Templating Engine with a Pure Vanilla PHP Project?

Aujourd'hui, je me suis mis au défi d'implémenter une approche Laravel MVC (Model, View, Controller) en utilisant du PHP pure vanilla. Pour résoudre ce problème, j'ai utilisé le moteur de création de modèles standard Laravel Blade pour la partie affichage du projet, mais sans installer Laravel puisque mon projet est purement PHP vanille. Voici comment j’ai réalisé cette intégration ;

J'ai commencé par installer un package appelé Blade par JensSegers en utilisant la commande Composer suivante :

composer require jenssegers/blade
Copier après la connexion

Ce package permet au moteur de création de modèles Blade d'être utilisé comme un package autonome, ce qui le rend compatible avec n'importe quel projet PHP, pas seulement Laravel.

Ensuite, j'ai exécuté la commande suivante pour mettre à jour la dépendance illuminate/view du package vers la version 11.7.0, car le package ne fonctionne pas correctement avec les versions inférieures à 11.7.0 :

composer require illuminate/view:11.7.0
Copier après la connexion

Ensuite, j'ai créé une base de données appelée "pdotest" avec une table appelée "post", qui comporte les colonnes "name" et "body". J'ai rempli cette table avec des données (« ceci est le nom de la publication de la base de données affichée à l'aide du moteur de modèle Blade », « ceci est le corps de la publication de la base de données affichée à l'aide du moteur de modèle Blade ») respectivement et je m'y suis connecté en créant le fichier Database.php à la racine de mon projet et mettez le code suivant :

<?php 


class Database {

    private $host = "localhost";
    private $database ="pdotest";
    private $username = "root" ;
    private $password =  '';

public function connect(){
    try {

        $conn = new PDO("mysql:host=$this->host;dbname=$this->database",$this->username,$this->password);

        // $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // $conn = $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


        return $conn;

    } catch (PDOException $e) {

        echo "Connection failed: " . $e->getMessage();

    }
}

}


?>
Copier après la connexion

Ensuite, j'ai créé un répertoire appelé "Modèles" pour toutes les manipulations de bases de données. Dans ce répertoire, j'ai créé un fichier nommé Post.php pour gérer les opérations sur la table "post". Dans ce fichier, j'ai défini une méthode appelée post pour récupérer une publication par son identifiant, comme indiqué ci-dessous :

<?php 
require './Database.php';

class Post {

   public $conn;

   private $table="post";

   public function __construct() {
    $this->conn = (new Database)->connect(); // Access directly (less secure)
}


public function getPost($id){

    $stmt= "SELECT * FROM $this->table WHERE id = :id";

    $stmt =  $this->conn->prepare($stmt);

    $stmt->bindParam(':id', $id, PDO::PARAM_INT);

    $stmt->execute();

    return $result = $stmt->fetch();

}


}


?>
Copier après la connexion

Ensuite, j'ai créé index.php pour agir comme un routeur, connectant mon contrôleur, ma vue et mon modèle. À l'intérieur, j'ai importé toutes mes vues et chemins de cache, que je vais créer pour placer mes vues Blade et mes fichiers de cache. Ces chemins ont ensuite été transmis à la classe Blade, fournie avec le package Blade que nous avons installé au début. J'ai ensuite transmis cette instance Blade à la classe PostController, que je vais créer, et j'ai appelé la méthode post de cette classe pour obtenir une publication par son ID à l'avenir.

<?php
require __DIR__ . '/vendor/autoload.php';
use Jenssegers\Blade\Blade;
require 'Controllers/ControllerPost.php';

$views = __DIR__ . '/views';

$cache = __DIR__ . '/cache';

if (!is_dir($cache)) {
    mkdir($cache, 0755, true);
}

$blade = new Blade($views, $cache);

// Simulate routing (In a real application, use a routing library)
$controller = new PostController($blade);

$controller->post();

?>
Copier après la connexion

Ensuite, j'ai créé un répertoire "controllers" à la racine de mon projet. À l'intérieur, j'ai reçu la variable Blade d'index.php (le routeur), appelée la méthode getPost du modèle Post pour obtenir une publication par son ID, et j'ai transmis cette publication à une vue Blade appelée « page d'accueil ».

<?php 
require 'Models/Post.php';


class PostController{

  protected $blade;

    public function __construct($blade) {
        $this->blade = $blade;
    }

  public function post(){

    $post = (new Post)->getPost(1);

    echo $this->blade->render('homepage', ['post' => $post]);


  }

}




?>
Copier après la connexion

Ensuite, j'ai créé un répertoire appelé "views" et un fichier nommé homepage.blade.php à la racine du projet. Dans ce fichier, j'ai simplement affiché le nom de la publication transmise depuis le PostController, comme indiqué ci-dessous :

<h1>{{$post['name']}}</h1>

Copier après la connexion

Enfin, j'ai créé un répertoire "cache" à la racine de mon projet pour stocker les fichiers de cache Blade, ce qui contribue à améliorer les performances de mon projet.

Maintenant, lorsque vous visitez http://localhost/laravel-blade-without-laravel/index.php dans votre navigateur, vous verrez le nom de la publication affiché sous la forme « ceci est le nom de la publication de la base de données affichée à l'aide du modèle Blade. moteur."

Merci d'avoir suivi cet article sur l'utilisation du moteur de modèles Laravel Blade dans un projet PHP purement vanille. J'espère que cela vous aidera dans votre parcours de développement. Je m'appelle Waziri Ally Amiri, un développeur Web de Moshi, en Tanzanie. Je me spécialise dans le travail avec Laravel et j'aime aider les autres à démarrer avec ce framework puissant. N'hésitez pas à nous contacter si vous avez des questions ou si vous avez besoin d'aide supplémentaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!