TheNight 1 Denunciar post Postado Maio 25, 2015 Olha e aqui de novo :assobiando: Vocês vão cansar de me ver aqui pedindo ajuda HEUHUEHE. Estou tendo uma certa dificuldade com meu sistema de Templates. (Créditos do Érick Master, peguei como base o sistema dele). Bom este é meu código: <?php class Template { private $TPL_File = NULL; private $Read_File = NULL; private $Tags = array(); private $Tags_Count = 0; private static $_instance; public static function getInstance() { if (!isset($_instance)) { self::$_instance = new self(); } return self::$_instance; } public function Load($TPL_File) { $this->TPL_File = @fopen($TPL_File, "r"); if ($this->TPL_File == FALSE) { exit("<span style=\"border:1px dashed #c00; color:#c00; padding:6px; background-color:#ffebe8;\">Error: Arquivo <strong>" . $TPL_File . "</strong> não Encontrado.</span>"); } $this->Read_File = @fread($this->TPL_File, @filesize($TPL_File)); if ($this->Read_File == FALSE) { exit("<span style=\"border:1px dashed #c00; color:#c00; padding:6px; background-color:#ffebe8;\">Error: Erro na leitura do Arquivo <strong>" . $TPL_File . "</strong></span>"); } } public function Set($Tag, $Value) { $this->Tags[$this->Tags_Count++] = array( "Name" => $Tag, "Value" => $Value ); } public function Show() { global $version; foreach ($this->Tags as $TPL_Tags) { $this->Read_File = str_replace("{" . $TPL_Tags["Name"] . "}", $TPL_Tags["Value"], $this->Read_File); } eval("?>" . $this->Read_File . "<?"); } public function TPL_Modules() { if (isset($_COOKIE["Web_Template"]) == FALSE) { $Template = constant("THEME_DEFAULT"); } elseif (file_exists("themes/" . pack("H*", $_COOKIE["Web_Template"]) . "/index.tpl.php") == FALSE) { setcookie("Web_Template", NULL); $Template = constant("THEME_DEFAULT"); echo("<script>window.alert('Template Invalido, aguarde...'); window.location='?';</script>"); } else { $Template = pack("H*", $_COOKIE["Web_Template"]); } $this->Set("Template_Dir", $Template); $this->Load("themes/" . $Template . "/index.tpl.php"); if (filter_input(INPUT_GET, "tpl") == TRUE) { $Set_Template = pack("H*", $_GET["tpl"]); if ($Set_Template == "TPL_Default") { setcookie("Web_Template", NULL); echo("<script>window.location='?';</script>"); } elseif (file_exists("templates/" . $Set_Template . "/index.tpl.php") == FALSE) { setcookie("Web_Template", NULL); echo("<script>window.alert('Template Invalido, aguarde...'); window.location='?';</script>"); } else { setcookie("Web_Template", bin2hex($Set_Template), time() + (1 * 24 * 60 * 60)); exit("<script>window.location='?';</script>"); } } } public function Open() { if (isset($_COOKIE["Web_Template"]) == FALSE) { return constant("THEME_DEFAULT"); } else { return pack("H*", $_COOKIE["Web_Template"]); } } } Ele está funcionando perfeitamente, meu template é aberto como eu quero, porém estou com dificuldade de abrir as páginas com esse sistema, fiz uma outra classe General.class.php : <?php class General { public function __construct() { global $Template; $Template->Set('%title_web%', WEB_TITLE); $Template->Set('%main_content%', $this->getPages()); var_dump($Template); } public function getPages() { global $Template; switch (filter_input(INPUT_GET, 'pages')) { case 'home': $Template->Load("themes/" . $Template->Open() . "/pages/home.page.php"); break; default : $Template->Load("themes/" . $Template->Open() . "/pages/home.page.php"); break; } } } Só que não está abrindo, quando dou um var_dump na minha variável de objeto $Template recebo isso: Compartilhar este post Link para o post Compartilhar em outros sites
Luis Paullo 47 Denunciar post Postado Maio 27, 2015 Não use global. Seu getInstance não faz sentindo algum! Não use algo que você não entenda totalmente. Mantenha-se sempre SIMPLES. private $template; public function __construct() { $this->template = new Template(); // aqui. $this->template ->Set('%title_web%', WEB_TITLE); $this->template ->Set('%main_content%', $this->getPages()); var_dump( $this->template ); } Compartilhar este post Link para o post Compartilhar em outros sites
TheNight 1 Denunciar post Postado Maio 28, 2015 Sim é que não tive lógica (não sabia por onde começar) pra montar o sistema de template, e fiz uma cópia cabulosa, mas depois eu fui me ajeitando, e retirei o uso do global, porém ainda não consegui resolver... Compartilhar este post Link para o post Compartilhar em outros sites
Luis Paullo 47 Denunciar post Postado Maio 28, 2015 Seu getPages() não retorna nada! Vc precisa retornar algo na sua function. para que possa passar para o array public function getPages() { switch (filter_input(INPUT_GET, 'pages')) { case 'home': //retorno uma string com HTML da pagina. ou use return include. return file_get_contents($this->template->Load("themes/" . $Template->Open() . "/pages/home.page.php") ); default : return "Sou um get!! Preciso retornar, para que possa ser pego meu valor, esse é meu único objetivo ;)"; } } Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Maio 28, 2015 Pesquise por Router e Dispatcher, muito mais fácil criar roteamento de paginas e carregar suas Templates, css, js... Na Dispatcher você controla qual diretório é! e carrega a template, por exemplo Home do Site, Admin, etc Compartilhar este post Link para o post Compartilhar em outros sites