2009-09-11 8 views
1

je vais plus/étudier le code facebook qui a été divulgué en 2007,
Je remarque 1 fonction qu'ils appellent plusieurs fois sur toutes les pages est ce tpl_set (param1, param2) fonctionComment faire des modèles en PHP comme ça?

Je vais assumer C'est quelque chose à voir avec les modèles, La fonction a 2 paramètres/variables passées en elle, il semble que le premier 1 est le nom du modèle et le second détermine s'il est allumé ou éteint peut-être? C'est juste ma supposition car seulement une partie du code était disponible. Ceci est juste à des fins d'étude, Basé sur quelque chose comme ci-dessous, quel type de code pourrait être écrit pour cette fonction pour montrer une certaine zone de la page? Je pense à faire une sorte de système de gabarit pour l'expérience d'apprentissage, c'est pourquoi je ne veux pas utiliser smarty.

S'il vous plaît donnez-moi vos idées sur la façon de faire cela?

<php 
tpl_set('home_announcement', $home_announcement_tpl); 
tpl_set('hide_announcement_bit', $HIDE_ANNOUNCEMENT_BIT); 
tpl_set('orientation_info', $orientation_info); 
tpl_set('feed_stories', $feed_stories); 

if ($show_friend_finder && (user_get_friend_count($user) > 20)) { 
    tpl_set('friend_finder_hide_options', array('text' => 'close', 'onclick' => "return clearFriendFinder()")); 
} 

//end of page has this 
render_template($_SERVER['PHP_ROOT'] . '/html/home.phpt'); 
?> 
+2

Je ne suis pas sûr que je considérerais le code facebook comme une excellente source d'apprentissage –

+0

Tbh ce code me semble assez moche. Noms de variables dans un cas différent, la chose templating ressemble à ce qu'il utilise des trucs variables statiques, etc –

+0

@jasondavis - en fait, le codage PHP de facebook n'est pas le meilleur. ni le leur est mal codé. Cependant, si vous voyez l'application de démonstration facebook connect The Run Around, je donnerais un code d'application de 3/10. – mauris

Répondre

2

En regardant le code snippet vous collez, je suppose tpl_set ensembles de variables spécifiques dans le modèle - tels que le réglage de la valeur de la variable feed_stories de modèle au contenu de $feed_stories. À la fin, la fonction render_template choisit un modèle et le rend.

Puisque vous dites que vous voulez faire un modèle de système vous-même, voici quelques conseils:

Le modèle le plus basique peut être un fichier PHP, comme ceci:

//mytemplate.php 
<h1><?php echo $title; ?></h1> 
<p><?php echo $content; ?></p> 

Ensuite, vous pouvez utiliser ceci comme

$title = 'some title'; 
$content = 'Hello world'; 
require 'mytemplate.php'; 

Ceci est le moyen le plus simple d'avoir des modèles en PHP. Vous pouvez éventuellement intégrer le processus ci-dessus dans une classe ou un ensemble de fonctions, de sorte que vous obtenez une interface un peu plus propre.

Une approche adoptée par divers moteurs de gabarits, tels que Smarty, consiste à avoir une syntaxe personnalisée. Comme vous le savez peut-être, Smarty vous permet d'utiliser {$foo} pour répercuter des variables dans les modèles. La façon dont cela fonctionne, est que vous fournissiez d'abord à Smarty des valeurs pour chaque variable de votre modèle. Lors du rendu du modèle, Smarty effectue une recherche et le remplace dans votre modèle, en remplaçant la syntaxe Smarty par vos valeurs.

(Il ne fait pas en fait que -. Il le convertit d'abord en code PHP, et il met en cache pour le rendre plus rapide, mais l'idée de base est que)

Hope this helps.

+0

merci, cela ressemble plus à ce qu'il fait maintenant que vous l'avez épelé. Et sur la base de votre exemple, je pourrais fondamentalement l'envelopper dans une fonction qui ressemble à celle de facebook et faire ce que vous avez décrit, merci – JasonDavis

Questions connexes