Pendant le processus de développement à l'aide de PHP, le moteur de modèle nous fournit des méthodes de rendu de vue pratique, aidant à séparer les extrémités avant et arrière et améliorer la maintenabilité du code. Cependant, nous appelons parfois directement les fonctions PHP dans le fichier de modèle, telles que ceil () , et nous rencontrerons des erreurs de rendu de page. Pourquoi est-ce? Cet article analysera ce problème sous plusieurs angles et fournira des solutions correspondantes.
La plupart des moteurs de modèles, tels que Smarty, Twig ou Blade, sont conçus pour minimiser la logique métier dans les modèles. Ils limitent généralement l'appel à des fonctions spécifiques ou à des fonctions de modèle personnalisées dans un modèle, dans le but d'empêcher le modèle de devenir complexe et difficile à maintenir.
En prenant Smarty à titre d'exemple, il ne permet que certaines fonctions PHP par défaut. Si vous écrivez directement dans le modèle:
{$value = ceil($number)}
Une erreur est susceptible d'être signalée car ceil () n'est pas une fonction prise en charge intégrée dans Smarty.
Afin de garantir la sécurité des modèles, le moteur du modèle restreint souvent l'exécution directe du code PHP ou de la sable de certaines fonctions. En utilisant des fonctions intégrées comme ceil () , sinon dans la liste blanche du moteur de modèle, l'analyseur ne le reconnaîtra pas, entraînant une défaillance de rendu.
Par exemple, dans certains modèles si vous écrivez ceci:
<code>
<?php echo ceil(3.7); ?>
</code>
Pendant l'analyse du moteur de modèle, ce code peut ne pas être exécuté correctement car le moteur de modèle peut le traiter comme du texte brut, ou les politiques de sécurité interdisent l'exécution du code PHP natif.
Il est de la meilleure pratique d'éviter d'appeler des fonctions PHP complexes directement dans les modèles. La bonne façon de le faire est:
Les données sont d'abord traitées dans le contrôleur ou la couche logique métier, comme effectuer l'opération CEIL () sur les valeurs numériques.
Passez les données traitées au modèle.
Le modèle est uniquement responsable de l'affichage et de la réduction des calculs logiques.
Exemple:
<?php
// Couche de contrôleur
$number = 3.7;
$roundedNumber = ceil($number);
include 'template.php';
Le modèle de fichier Template.php ne nécessite que une sortie simple:
<code>
<?php echo $roundedNumber; ?>
</code>
Cela garantit non seulement un code clair, mais évite également les erreurs de rendu de modèle.
Si vous devez utiliser ceil () dans un modèle, vous devez vous assurer que le moteur de modèle prend en charge l'appel de la fonction ou l'implémenter en étendant et en enregistrant les fonctions personnalisées.
Prendre Smarty comme exemple, vous pouvez enregistrer une fonction de plug-in:
<?php
$smarty->registerPlugin('function', 'ceil', function ($params) {
return ceil($params['value']);
});
Appelé dans le modèle:
<code>
{ceil value=$number}
</code>
Cela ne correspond pas non seulement aux spécifications du moteur de modèle, mais évite également les erreurs de rendu.
Si vous devez sortir une URL dans le modèle, afin de répondre aux besoins spécifiques, remplacez le nom de domaine de l'URL par M66.net , et vous pouvez utiliser PHP pour traiter la chaîne: