Comment passer des arguments à un fichier inclus?
Je suis en train de faire de l'ensemble de <head>
section de son propre fichier include. Un inconvénient est le titre et la description et les mots clés sont les mêmes; je ne peux pas comprendre comment passer des arguments à l'include de fichier.
Voici donc le code:
index.php
<?php include("header.php?header=aaaaaaaaaaaaaaaaaaaaa"); ?>
<body>
.....
..
.
header.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<link rel="shortcut icon" href="favicon.ico">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="Keywords" content=" <?php $_GET["header"]?> " >
<meta name="Description" content=" <?php $_GET["header"]?> " >
<title> <?php $_GET["header"]?> </title>
<link rel="stylesheet" type="text/css" href="reset.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
</head>
Évidemment, cela ne fonctionne pas, comment puis-je passer des arguments à un fichier inclus?
Vous devez vous connecter pour publier un commentaire.
index.php:
et header.php
Ce n'est pas une solution idéale, mais je comprends que c'est vos premiers pas en php.
PS. Votre Doctype ne correspond pas au code. J'ai ajusté à votre tête de html à XHTML.
Inclure a la portée de la ligne, il est appelé à partir.
Si vous ne voulez pas de créer de nouvelles variables globales, vous pouvez envelopper
include()
avec une fonction:$title
seront définis dans le code inclus chaque fois que vous appelezincludeHeader
avec une valeur, par exempleincludeHeader('My Fancy Title')
.Si vous voulez passer plus d'une variable, vous pouvez toujours passer un tableau au lieu d'une chaîne.
Nous allons créer une fonction générique:
Voila!
À l'aide de extrait rend encore plus net:
Maintenant vous pouvez le faire:
Sachant qu'elle causera des variables
$keywords
et$title
être défini dans le champ d'application du code.global
), ou via$GLOBALS
.Vous ne pouvez pas passer des arguments à
include
, mais il a accès à toutes les variables que vous avez déjà définies. À partir de lainclude
de la documentation:Ainsi:
index.php
header.php
Bien marc, lorsque vous utilisez inclure, vous pouvez simplement définir une variable pour l'utiliser:
Dans votre fichier d'en-tête:
Permettre à vos variables précédemment définies sont utilisables dans tous les vous avez.
vous êtes sur la pensée d'il
::EDIT::
J'ai décidé d'ajouter de la valeur
Le fichier inclus gagnera le champ d'application de l'endroit où vous l'aviez inclus. Donc, si vous incluez un fichier à l'INTÉRIEUR d'une fonction:
De plus, vous incluez le même fichier plusieurs fois à grand effet.
Et même l'utiliser pour charger des modèles qui font partie d'une méthode dans une classe. Si vous pouvez faire quelque chose comme:
double-edged sword
- Qu'est ce qui, dans la ligne de la documentation est pour. ;-D.définir une variable comme un pseudo-argument/solution de contournement avant un
include()
- comme recommandé par de nombreux - c'est une mauvaise idée. il introduit une variable dans la portée globale. définir une fonction dans le fichier inclus, au lieu d'attraper les arguments que tu veux passer.C'est une bonne approche. J'ai cependant serait-il le faire un peu à l'intérieur. Définir une mise en page, un wrapper pour votre page web et inclure votre fichier de contenu en elle:
Votre contenu fichier de modèle peut ressembler à ceci par exemple
Ensuite, vous avez votre script principal (index) qui va gérer la logique, se connecte à la base de données etc.
De cette façon, vous pouvez bien séparer la logique métier et la présentation. Et il peut vous aider à réduire de code répétitif pour les pièces de page comme logo ou de navigation qui sont répétées sur l'ensemble du site.
Si vous incluez un fichier, il est tout comme l'insertion de ce code dans le fichier parent. Vous pourriez simplement faire ceci:
et puis dans le
header.php
J'ai utilisé le
isset()
méthode pour vérifier qu'il a une valeur déjà et est instancié.J'ai remarqué que personne n'a suggéré d'utiliser une moteur de template. Je suis venu ici parce que, pour le projet sur lequel je travaille avec un moteur de template n'est pas possible et que peut-être votre situation trop, mais j'ai pensé qu'il pourrait être utile de mentionner ces: Twig (mon préféré du moteur) et Smarty à la fois permettre la transmission des variables spécifiques à l'inclut.
Je très recommandons l'utilisation d'un modèle de moteur chaque fois que possible, car il simplifie votre frontal code, ajoute une couche d'abstraction entre votre front-end et back-end, et les deux Rameaux et de Smarty nettoyer automatiquement les variables que vous avez pass pour eux, ce qui permet de limiter les attaques XSS.
Twig Exemple
header.html
index.html
Smarty Exemple
en-tête.tpl
index.tpl