En plus de l'existence de Smarty.class.php (qui est également discutable), comment savons-nous qu'un projet php utilise le framework de template smarty simplement en regardant sa structure de fichiers?Comment détecter l'utilisation de smarty template framework?
Répondre
Généralement, les projets bien structurés auront un modèle et un dossier template_c - bien que les noms puissent être configurés/modifiés. En outre, recherchez les fichiers .tpl dans ces dossiers.
La meilleure approche que je peux voir est à grep pour les fonctions de Smarty communes comme Fetch/assignez/affichage ou balises Smarty commun comme {foreach}, {assign}, {if}, etc.
Je pense que vous pouvez le comprendre par la vérification de la vue de base class.E.g
class View
{
protected $tpl;
protected $tplfilename;
public function __construct()
{
$this->tpl = new Smarty();
$this->tpl->template_dir = dirname(__FILE__)."/templates";
$this->tpl->compile_dir = dirname(__FILE__)."/templates_c";
$this->tpl->config_dir = dirname(__FILE__)."/configs";
$this->tpl->cache_dir = dirname(__FILE__)."/cache";
$this->tpl->left_delimiter = "{|";
$this->tpl->right_delimiter = "|}";
$this->tplfilename = "default.tpl";
}
public function show()
{
$this->tpl->display($this->tplfilename);
}
}
Cela devrait probablement être un style typique Smarty.
Vous pourriez avoir besoin de foncez pour trouver les templates et templates_c - dans l'un de mes projets, ils ne sont même pas dans htdocs - le dossier smarty est au même niveau que htdocs. Et nous avons nommé notre classe Smarty basée sur le projet, donc même la recherche de "new Smarty()" ne fonctionnerait pas.
Je pense que la première réponse qui recommande de rechercher des fonctions intelligentes communes pourrait être votre meilleur pari.
Tous les projets ne sont pas basés sur la POO ou utilisent l'approche MVC. Bien que je pense qu'il wud être mieux s'ils l'ont fait;) .. – pinaki
@pinaki Vrai, alors il sera difficile de faire savoir ce cuz la plupart des répertoires dans smarty sont configurables. – Young
Puisqu'un compile_dir est requis, on peut rechercher l'une des deux choses suivantes: la présence du dossier 'templates_c' par défaut ou une ligne contenant '-> compile_dir'. – djn