純粋なバニラ PHP プロジェクトで Laravel Blade テンプレート エンジンを使用する方法は?

WBOY
リリース: 2024-07-18 11:30:48
オリジナル
877 人が閲覧しました

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

今日、私は純粋なバニラ PHP を使用して Laravel MVC (モデル、ビュー、コントローラー) アプローチを実装することに挑戦しました。これに取り組むために、プロジェクトのビュー部分に標準の Laravel Blade テンプレート エンジンを利用しましたが、私のプロジェクトは純粋にバニラ PHP であるため、Laravel はインストールしませんでした。私がこの統合を達成した方法は次のとおりです。

私は、次の Composer コマンドを使用して、JensSegers による Blade というパッケージをインストールすることから始めました。

composer require jenssegers/blade
ログイン後にコピー

このパッケージにより、Blade テンプレート エンジンをスタンドアロン パッケージとして使用できるようになり、Laravel だけでなく、あらゆる PHP プロジェクトと互換性が得られます。

次に、パッケージが 11.7.0 より前のバージョンでは正しく動作しないため、次のコマンドを実行してパッケージのイルミネーション/ビューの依存関係をバージョン 11.7.0 に更新しました。

composer require illuminate/view:11.7.0
ログイン後にコピー

次に、「name」列と「body」列を持つ「post」というテーブルを含む「pdotest」というデータベースを作成しました。このテーブルにデータ(「これは、Blade テンプレート エンジンを使用して表示されたデータベースからの投稿名です」、「これは Blade テンプレート エンジンを使用して表示されたデータベースからの投稿本文です」)をそれぞれ入力し、データベースのルートに Database.php ファイルを作成して接続しました。プロジェクトを作成し、次のコードを追加します:

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

    }
}

}


?>
ログイン後にコピー

次に、すべてのデータベース操作用に「Models」というディレクトリを作成しました。このディレクトリ内に、「post」テーブルの操作を処理するための Post.php という名前のファイルを作成しました。このファイル内で、以下に示すように、ID で投稿を取得する post というメソッドを定義しました。

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

}


}


?>
ログイン後にコピー

次に、ルーターとして機能するindex.phpを作成し、コントローラー、ビュー、モデルを接続しました。その中に、すべてのビューとキャッシュ パスをインポートしました。これは、Blade ビューとキャッシュ ファイルを配置するために作成します。これらのパスは、最初にインストールした Blade パッケージに付属する Blade クラスに渡されました。次に、この Blade インスタンスをこれから作成する PostController クラスに渡し、そのクラスの post メソッドを呼び出して、今後 ID によって投稿を取得します。

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

?>
ログイン後にコピー

次に、プロジェクトのルートに「controllers」ディレクトリを作成しました。その中で、index.php (ルーター) から Blade 変数を受け取り、Post モデルの getPost メソッドを呼び出して ID で投稿を取得し、その投稿を「homepage」という Blade ビューに渡しました。

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


  }

}




?>
ログイン後にコピー

次に、プロジェクトのルートに「views」というディレクトリと、homepage.blade.php という名前のファイルを作成しました。このファイル内では、以下に示すように、PostController から渡された投稿の名前を単純に表示しました。

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

ログイン後にコピー

最後に、プロジェクトのルートに Blade キャッシュ ファイルを保存するための「cache」ディレクトリを作成しました。これは、プロジェクトのパフォーマンスの向上に役立ちます。

ブラウザで http://localhost/laravel-blade-without-laravel/index.php にアクセスすると、「これは、Blade テンプレートを使用して表示されたデータベースからの投稿名です」として表示される投稿の名前が表示されます。エンジン。」

純粋なバニラ PHP プロジェクトでの Laravel Blade テンプレート エンジンの使用について、この投稿を読んでいただきありがとうございます。あなたの開発の旅に役立つことを願っています。私の名前はワジリ・アリー・アミリ、タンザニアのモシ出身のウェブ開発者です。私は Laravel の使用を専門としており、他の人がこの強力なフレームワークを使い始めるのを手助けするのが大好きです。ご質問がある場合、またはさらにサポートが必要な場合はお気軽にお問い合わせください。

以上が純粋なバニラ PHP プロジェクトで Laravel Blade テンプレート エンジンを使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!