Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Sistema de Template


Gneccao

Pergunta

Boa Noite, estou tentando fazer um sistema de Template, mas não estou conseguindo fazer com que ele ignore as tags <?php e apenas modifique as tags {@}

com isso ele pega todo o conteudo dentro das tags <?php e transformar em html.

alguém poderia me ajudar???

public function setVariable($name, $value)

{

$this->_variables["names"][] = "/{@" . $name . "}/";

$this->_variables["values"][] = $value;

}

private function setVariables($content)

{

return preg_replace($this->_variables["names"], $this->_variables["values"], $content);

}

public function build()

{

$final = $this->setVariables($this->_content);

$final = $this->setVariables($final); // segundo passe

return $final;

}

as funcoes que utilizo

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

<?php echo $func->registrar($_POST['senha'],$_POST['senha2'],$_POST['email'],$_POST['email2'],$_POST['nome'],$_POST['id'],$_POST['id2'], $_POST['perg'],$_POST['resp'],$_POST['codigo'],@$_POST['bonus'],$_POST['indicado'],$_POST['account']); } ?>

essa é a funcao

so q no site aparece

registrar($_POST['senha'],$_POST['senha2'],$_POST['email'],$_POST['email2'],$_POST['nome'],$_POST['id'],$_POST['id2'], $_POST['perg'],$_POST['resp'],$_POST['codigo'],@$_POST['bonus'],$_POST['indicado'],$_POST['account']); } ?>

apenas isso, toda tag <?php, ele ignora e n verifica ela, apenas mostra o conteudo, como se fosse html

Link para o comentário
Compartilhar em outros sites

  • 0

Escrevi um exemplo simples. Não utilize em produção já que não foi testado devidamente. Se você usar a responsabilidade é toda sua :)

View.php

<?php
class View
{
    private $_fileName;
    private $_data;

    public function __construct($fileName)
    {
        $this->_data = array();

        if (!file_exists($fileName)) {
            throw new View_Exception('File not found');
        }

        if (!is_readable($fileName)) {
            throw new View_Exception('Could not read view file');
        }

        $this->_fileName = $fileName;
    }

    public function __set($variable, $value)
    {
        $this->_data[$variable] = $value;
    }

    public function render()
    {
        extract($this->_data);

        ob_start();
        require $this->_fileName;
        $output = ob_get_contents();
        ob_end_clean();

        return $output;
    }

    public function __toString()
    {
        return $this->render();
    }
}
View_Exception.php
<?php
class View_Exception extends Exception {}
template.tpl:
<h1><?php echo $titulo; ?></h1>
<p>Bem vindo ao meu site</p>
<p>Meu nome é <?php echo $desenvolvedor->nome ?></p>
Código que usa o template:
<?php
require_once 'View.php';
require_once 'View_Exception.php';

$desenvolvedor = new StdClass();
$desenvolvedor->nome = 'John Doe';

$view = new View('template.tpl');
$view->titulo = 'Meu site pessoal';
$view->desenvolvedor = $desenvolvedor;
echo $view; // Ou $view->render(), tanto faz ...

O código pode ser melhorado, mas já dá para ter uma ideia de como resolver o seu problema. A classe View deveria ter apenas uma responsabilidade. Ela não deveria verificar se um arquivo existe ou se é possível ler o arquivo ...

Se tiver dúvidas poste novamente.

Um abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...