Bom dia pessoal, sou iniciante em php e estou tendo um problema que não sei resolver.
estou tentando aprender MVC e logo de inicio tive um erro que não sei como resolver, alguém pode me ajudar?
o erro:
Fatal error: Uncaught ArgumentCountError: Too few arguments to function App\Utils\View::render(), 1 passed in C:\xampp\htdocs\app\Controller\Pages\Page.php on line 16 and exactly 2 expected in C:\xampp\htdocs\app\Utils\View.php:33 Stack trace: #0 C:\xampp\htdocs\app\Controller\Pages\Page.php(16): App\Utils\View::render('pages/header') #1 C:\xampp\htdocs\app\Controller\Pages\Page.php(34): App\Controller\Pages\Page::getHeader() #2 C:\xampp\htdocs\app\Controller\Pages\Home.php(23): App\Controller\Pages\Page::getPage('Like Desenvolvi...', '<h1>Home LucasD...') #3 C:\xampp\htdocs\index.php(7): App\Controller\Pages\Home::getHome() #4 {main} thrown in C:\xampp\htdocs\app\Utils\View.php on line 33
a pagina Page.php:
<?php
namespace App\Controller\Pages;
use \App\Utils\View;
class Page {
/**
*
*Método responsavel por renderizar o topo da pagina
* @return string
*/
private static function getHeader(){
return View::render('pages/header');
//$depura = View::render('pages/header');
//var_dump($depura);
}
private static function getFooter(){
return View::render('pages/footer');
}
/**
* Metodo responsavel por retornar o conteúdo (view) da nossa Pagina Generica
* @return string
*/
public static function getPage($title, $content) {
return View::render('pages/page', [
'title' => $title,
'header' => self::getHeader(),
'content' => $content,
///'footer' => self::getFooter()
]);
}
}
?>
a pagina View.php
<?php
namespace App\Utils;
class View{
/**
*
* Método responsavel por retornar o conteúdo de uma view
* @param string $view
* @return string
*
*/
private static function getContentView($view){
//
$file = __DIR__.'/../../resources/view/'.$view.'.html';
return file_exists($file) ? file_get_contents($file) : '';
}
/**
*
* Método responsavel por retornar o conteúdo renderizado de uma view
* @param string $view
* @param array $vars (strings/numerics)
* @return string
*
*/
public static function render($view, $vars){
$contentView = self::getContentView($view);
//Chaves do array de variaveis
$keys = array_keys($vars);
//mapeio o array
$keys = array_map(function($item){
return '{{'.$item.'}}';
}, $keys);
return str_replace($keys,array_values($vars),$contentView);
}
}
?>
A pagina Home.php:
<?php
namespace App\Controller\Pages;
use \App\Utils\View;
class Home extends Page{
/**
* Metodo responsavel por retornar o conteúdo (view) da nossa home
* @return string
*/
public static function getHome() {
$content = View::render('pages/home', [
'name' => 'LucasDevLike',
'description' => 'aprendendo php e mvc',
'link' => 'https://likedesenvolvimento.com.br',
'site' => 'likedesenvolvimento.com.br'
]);
//Retorna a view da pagina
return parent::getPage('Like Desenvolvimento - MVC', $content);
}
}
?>