今天,我挑戰自己使用純 PHP 實作 Laravel MVC(模型、視圖、控制器)方法。為了解決這個問題,我在專案的視圖部分使用了標準的 Laravel Blade 模板引擎,但沒有安裝 Laravel,因為我的專案是純粹的 PHP。以下是我實現這種整合的方法;
我首先使用以下 Composer 指令安裝一個名為 Blade 的軟體包,作者是 JensSegers:
composer require jenssegers/blade
這個套件允許 Blade 模板引擎作為獨立套件使用,使其與任何 PHP 專案相容,而不僅僅是 Laravel。
接下來,我運行以下命令將包的照亮/視圖依賴項更新到版本 11.7.0,因為該包無法在 11.7.0 以下的版本中正常工作:
composer require illuminate/view:11.7.0
然後,我建立了一個名為「pdotest」的資料庫,其中包含一個名為「post」的表,其中包含「name」和「body」列。我分別用數據填充此表(“這是使用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.php 的檔案來處理「post」表上的操作。在此文件中,我定義了一個名為 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(); } } ?>
接下來,我創建了 index.php 來充當路由器,連接我的控制器、視圖和模型。在其中,我匯入了所有視圖和快取路徑,我將建立這些路徑來放置我的 Blade 視圖和快取檔案。然後這些路徑被傳遞給 Blade 類,該類是我們一開始安裝的 Blade 套件附帶的。然後,我將此 Blade 實例傳遞給我將創建的 PostController 類,並呼叫該類的 post 方法以在將來透過其 ID 取得貼文。
post(); ?>
然後,我在專案的根目錄下建立了一個「controllers」目錄。在其中,我從index.php(路由器)接收了 Blade 變量,調用 Post 模型的 getPost 方法以通過其 ID 獲取帖子,並將該帖子傳遞到名為“homepage”的 Blade 視圖。
blade = $blade; } public function post(){ $post = (new Post)->getPost(1); echo $this->blade->render('homepage', ['post' => $post]); } } ?>
然後,我在專案的根目錄下建立了一個名為「views」的目錄和一個名為 homepage.blade.php 的檔案。在這個文件中,我只是顯示了從 PostController 傳遞的帖子的名稱,如下所示:
{{$post['name']}}
最後,我在專案的根目錄中建立了一個「cache」目錄來儲存 Blade 快取文件,這有助於提高專案的效能。
現在,當您在瀏覽器中造訪http://localhost/laravel-blade-without-laravel/index.php 時,您將看到貼文的名稱顯示為「這是使用Blade 範本顯示的資料庫中的帖子名稱”引擎。 」
感謝您關注這篇關於在純 PHP 專案中使用 Laravel Blade 模板引擎的文章。我希望它對您的發展之旅有所幫助。我叫 Waziri Ally Amiri,是來自坦尚尼亞莫希的 Web 開發人員。我專注於使用 Laravel,並且喜歡幫助其他人開始使用這個強大的框架。如果您有任何疑問或需要進一步協助,請隨時與我們聯繫。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3