ホームページ >バックエンド開発 >PHPチュートリアル >純粋なバニラ PHP プロジェクトで Laravel Blade テンプレート エンジンを使用する方法は?
今日、私は純粋なバニラ 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 サイトの他の関連記事を参照してください。