Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Menggunakan Enjin Templat Bilah Laravel dengan Projek PHP Vanila Tulen?

Bagaimana Menggunakan Enjin Templat Bilah Laravel dengan Projek PHP Vanila Tulen?

WBOY
WBOYasal
2024-07-18 11:30:48900semak imbas

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

Hari ini, saya mencabar diri saya untuk melaksanakan pendekatan Laravel MVC (Model, View, Controller) menggunakan PHP vanila tulen. Untuk menangani perkara ini, saya menggunakan enjin templat Laravel Blade standard untuk bahagian paparan projek, tetapi tanpa memasang Laravel kerana projek saya adalah PHP vanila semata-mata. Begini cara saya mencapai penyepaduan ini;

Saya mulakan dengan memasang pakej yang dipanggil Blade oleh JensSegers menggunakan arahan Komposer berikut:

composer require jenssegers/blade

Pakej ini membolehkan enjin templat Blade digunakan sebagai pakej kendiri, menjadikannya serasi dengan mana-mana projek PHP, bukan hanya Laravel.

Seterusnya, saya menjalankan arahan berikut untuk mengemas kini kebergantungan illuminate/view pakej kepada versi 11.7.0, kerana pakej tidak berfungsi dengan betul dengan versi di bawah 11.7.0:

composer require illuminate/view:11.7.0

Kemudian, saya mencipta pangkalan data yang dipanggil "pdotest" dengan jadual yang dipanggil "post," yang mempunyai lajur "nama" dan "badan." Saya mengisi jadual ini dengan data ('ini adalah nama siaran daripada pangkalan data yang dipaparkan menggunakan enjin templat Blade', 'ini adalah badan siaran daripada pangkalan data yang dipaparkan menggunakan enjin templat Blade') dan disambungkan kepadanya dengan mencipta fail Database.php dalam akar saya projek dan letakkan kod berikut:

<?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();

    }
}

}


?>

Seterusnya, saya mencipta direktori yang dipanggil "Model" untuk semua manipulasi pangkalan data. Di dalam direktori ini, saya mencipta fail bernama Post.php untuk mengendalikan operasi pada jadual "post". Dalam fail ini, saya mentakrifkan kaedah yang dipanggil siaran untuk mendapatkan semula siaran dengan IDnya, seperti yang ditunjukkan di bawah:

<?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();

}


}


?>

Seterusnya, saya mencipta index.php untuk bertindak sebagai penghala, menyambungkan pengawal, paparan dan model saya. Di dalamnya, saya mengimport semua pandangan dan laluan cache saya, yang akan saya buat untuk meletakkan pandangan Blade dan fail cache saya. Laluan ini kemudiannya dihantar ke kelas Blade, yang disertakan dengan pakej Blade yang kami pasang pada mulanya. Saya kemudian menyerahkan contoh Blade ini kepada kelas PostController, yang akan saya buat, dan memanggil kaedah siaran kelas itu untuk mendapatkan siaran dengan IDnya pada masa hadapan.

<?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();

?>

Kemudian, saya mencipta direktori "pengawal" di akar projek saya. Di dalamnya, saya menerima pembolehubah Blade daripada index.php (penghala), memanggil kaedah getPost model Post untuk mendapatkan siaran dengan IDnya dan menghantar siaran itu ke paparan Blade yang dipanggil "halaman utama."

<?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]);


  }

}




?>

Kemudian, saya mencipta direktori yang dipanggil "views" dan fail bernama homepage.blade.php di akar projek. Di dalam fail ini, saya hanya memaparkan nama siaran yang diluluskan daripada PostController, seperti yang ditunjukkan di bawah:

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

Akhir sekali, saya mencipta direktori "cache" dalam akar projek saya untuk menyimpan fail cache Blade, yang membantu meningkatkan prestasi projek saya.

Sekarang, apabila anda melawati http://localhost/laravel-blade-without-laravel/index.php dalam penyemak imbas anda, anda akan melihat nama siaran dipaparkan sebagai "ini adalah nama siaran daripada pangkalan data yang dipaparkan menggunakan templat Blade enjin."

Terima kasih kerana mengikuti siaran ini menggunakan enjin templat Laravel Blade dalam projek PHP vanila tulen. Saya harap ia membantu anda dalam perjalanan pembangunan anda. Nama saya Waziri Ally Amiri, pembangun web dari Moshi, Tanzania. Saya pakar dalam bekerja dengan Laravel dan suka membantu orang lain bermula dengan rangka kerja yang berkuasa ini. Jangan ragu untuk menghubungi jika anda mempunyai sebarang pertanyaan atau memerlukan bantuan lanjut.

Atas ialah kandungan terperinci Bagaimana Menggunakan Enjin Templat Bilah Laravel dengan Projek PHP Vanila Tulen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn