Hoje, me desafiei a implementar uma abordagem Laravel MVC (Model, View, Controller) usando puro PHP vanilla. Para resolver isso, utilizei o mecanismo de modelagem padrão do Laravel Blade para a parte de visualização do projeto, mas sem instalar o Laravel, pois meu projeto é puramente PHP básico. Veja como consegui essa integração;
Comecei instalando um pacote chamado Blade de JensSegers usando o seguinte comando do Composer:
composer require jenssegers/blade
Este pacote permite que o mecanismo de modelagem Blade seja usado como um pacote independente, tornando-o compatível com qualquer projeto PHP, não apenas com o Laravel.
Em seguida, executei o seguinte comando para atualizar a dependência de iluminação/visualização do pacote para a versão 11.7.0, pois o pacote não funciona corretamente com versões abaixo de 11.7.0:
composer require illuminate/view:11.7.0
Então, criei um banco de dados chamado "pdotest" com uma tabela chamada "post", que possui as colunas "nome" e "corpo". Eu preenchi esta tabela com dados ('este é o nome da postagem do banco de dados exibido usando o mecanismo de modelo Blade', 'este é o corpo da postagem do banco de dados exibido usando o mecanismo de modelo Blade') respectivamente e conectei a ela criando o arquivo Database.php na raiz do meu projeto e coloque o seguinte código:
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(); } } } ?>
Em seguida, criei um diretório chamado "Models" para todas as manipulações de banco de dados. Dentro deste diretório, criei um arquivo chamado Post.php para lidar com as operações na tabela "post". Dentro deste arquivo, defini um método chamado post para recuperar um post pelo seu ID, conforme mostrado abaixo:
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(); } } ?>
Em seguida, criei index.php para atuar como um roteador, conectando meu controlador, visualização e modelo. Dentro dele, importei todas as minhas visualizações e caminhos de cache, que irei criar para colocar minhas visualizações Blade e arquivos de cache. Esses caminhos foram então passados para a classe Blade, que vem com o pacote Blade que instalamos no início. Em seguida, passei essa instância do Blade para a classe PostController, que irei criar, e chamei o método post dessa classe para obter uma postagem por seu ID no futuro.
post(); ?>
Então, criei um diretório "controllers" na raiz do meu projeto. Dentro dele, recebi a variável Blade de index.php (o roteador), chamei o método getPost do modelo Post para obter uma postagem por seu ID e passei essa postagem para uma visualização do Blade chamada "página inicial".
blade = $blade; } public function post(){ $post = (new Post)->getPost(1); echo $this->blade->render('homepage', ['post' => $post]); } } ?>Então, criei um diretório chamado "views" e um arquivo chamado homepage.blade.php na raiz do projeto. Dentro deste arquivo, simplesmente exibi o nome do post passado do PostController, conforme mostrado abaixo:
blade = $blade; } public function post(){ $post = (new Post)->getPost(1); echo $this->blade->render('homepage', ['post' => $post]); } } ?>Finalmente, criei um diretório "cache" na raiz do meu projeto para armazenar arquivos de cache do Blade, o que ajuda a melhorar o desempenho do meu projeto.
Agora, ao visitar http://localhost/laravel-blade-without-laravel/index.php em seu navegador, você verá o nome da postagem exibido como "este é o nome da postagem do banco de dados exibido usando o modelo Blade motor."
Obrigado por acompanhar esta postagem sobre como usar o mecanismo de modelagem Laravel Blade em um projeto PHP puro. Espero que ajude você em sua jornada de desenvolvimento. Meu nome é Waziri Ally Amiri, desenvolvedor web de Moshi, Tanzânia. Eu me especializo em trabalhar com Laravel e adoro ajudar outras pessoas a começarem com esta estrutura poderosa. Sinta-se à vontade para entrar em contato se tiver alguma dúvida ou precisar de mais assistência.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3