Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass arguments to an included file?

Tags:

include

php

I'm trying to make the whole <head> section its own include file. One drawback is the title and description and keyword will be the same; I can't figure out how to pass arguments to the include file.

So here is the 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> 

Obviously this doesn't work; how can I pass arguments to an included file?

like image 789
menardmam Avatar asked Nov 30 '10 15:11

menardmam


People also ask

How do you pass arguments in Visual Basic?

In Visual Basic, you can pass an argument to a procedure by value or by reference. This is known as the passing mechanism, and it determines whether the procedure can modify the programming element underlying the argument in the calling code.


2 Answers

Include has the scope of the line it's called from.

If you don't want to create new global variables, you can wrap include() with a function:

function includeHeader($title) {     include("inc/header.php"); } 

$title will be defined in the included code whenever you call includeHeader with a value, for example includeHeader('My Fancy Title').

If you want to pass more than one variable you can always pass an array instead of a string.

Let's create a generic function:

function includeFile($file, $variables) {     include($file); } 

Voila!

Using extract makes it even neater:

function includeFileWithVariables($fileName, $variables) {    extract($variables);    include($fileName); } 

Now you can do:

includeFileWithVariables("header.php", array(     'keywords'=> "Potato, Tomato, Toothpaste",     'title'=> "Hello World" )); 

Knowing that it will cause variables $keywords and $title to be defined in the scope of the included code.

like image 81
Rolf Avatar answered Sep 22 '22 12:09

Rolf


index.php:

<?php $my_header = 'aaaaaaaaaaaaaaaaaaaa'; include 'header.php'; ?> 

and 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"> <head> <link rel="shortcut icon" href="favicon.ico" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="Keywords" content=" <?php echo $my_header ?> " /> <meta name="Description" content=" <?php echo $my_header ?> " /> <title> <?php echo $my_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> 

It's not an ideal solution, but I understand it's your first steps in php.

PS. Your Doctype doesn't match the code. I've adjusted your header html to be XHTML.

like image 30
Michal M Avatar answered Sep 26 '22 12:09

Michal M