Questionob_start() Alternative pour les templates en PHP?
UpdatedJe construis un framework MVC, pour mes modèles et points de vue, je vais avoir un fichier de modèle de page principale et mon point de vue sera inclus dans ce modèle.
La seule façon que je l'ai vu le faire est d'utiliser la sortie buffereing
ob_start();
include 'userProfile.php';
$content = ob_get_clean();
est-il une autre façon de le faire? Je pense en mémoire tampon de sortie n'est pas le meilleur sur la performance car il utilise beaucoup de mémoire
Voici un contrôleur de l'échantillon, la $this->view->load('userProfile', $profileData);
est la partie qui sera chargée à l'aide biffering de sortie afin qu'il puisse être inclus dans le modèle principal ci-dessous dans la partie de contenu $
vue classe
public function load($view,$data = null) {
if($data) {
$this->data = $data;
extract($data);
} elseif($this->data != null) {
extract($this->data);
}
ob_start();
require(APP_PATH . "Views/$view.php");
$content = ob_get_clean();
}
contrôleur
/**
* Example Controller
*/
class User_Controller extends Core_Controller {
// domain.com/user/id-53463463
function profile($userId)
{
// load a Model
$this->loadModel('profile');
//GET data from a Model
$profileData = $this->profile_model->getProfile($userId);
// load view file
$this->view->load('userProfile', $profileData);
}
}
principal modèle de site
<html>
<head>
</head>
<body>
<?php echo $content; ?>
</body>
</html>
Avez-vous envisagé d'en utiliser une déjà existante telle que Twig ou Smarty? – Treffynnon
Comment êtes-vous arrivé à la conclusion que la mémoire tampon de sortie utilise beaucoup de mémoire? Avez-vous réellement profilé le code et découvert que c'est effectivement le cas? –
Si vous souhaitez placer le modèle rendu dans une variable, il consommera toujours au moins la taille du modèle rendu. – arnaud576875