今日、私は純粋なバニラ 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 ファイルを作成して接続しました。プロジェクトを作成し、次のコードを入力します:
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 というメソッドを定義しました。
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 によって投稿を取得します。
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(); } } ?>次に、プロジェクトのルートに「controllers」ディレクトリを作成しました。その中で、index.php (ルーター) から Blade 変数を受け取り、Post モデルの getPost メソッドを呼び出して ID で投稿を取得し、その投稿を「homepage」という Blade ビューに渡しました。
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(); } } ?>次に、プロジェクトのルートに「views」というディレクトリとhomepage.blade.phpというファイルを作成しました。このファイル内では、以下に示すように、PostController から渡された投稿の名前を単純に表示しました。
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(); } } ?>最後に、Blade キャッシュ ファイルを保存するためにプロジェクトのルートに「cache」ディレクトリを作成しました。これは、プロジェクトのパフォーマンスの向上に役立ちます。
ブラウザで http://localhost/laravel-blade-without-laravel/index.php にアクセスすると、「これは、Blade テンプレートを使用して表示されたデータベースからの投稿名です」として表示される投稿の名前が表示されます。エンジン。"
純粋なバニラ PHP プロジェクトでの Laravel Blade テンプレート エンジンの使用に関するこの投稿をフォローしていただき、ありがとうございます。あなたの開発の旅に役立つことを願っています。私の名前はワジリ・アリー・アミリ、タンザニアのモシ出身のウェブ開発者です。私は Laravel の使用を専門としており、他の人がこの強力なフレームワークを使い始めるのを手助けするのが大好きです。ご質問がある場合、またはさらにサポートが必要な場合はお気軽にお問い合わせください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3