Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP include best practices question

Tags:

include

php

I have been learning syntax for PHP and practicing it. I come from a .NET background so masterpages always made things pretty easy for me when it came to headers and footers.

So far I have a mainHeader.php and mainFooter.php which have my head menu and my footer html. I created a mainBody.php and at the top I put

<?php include "mainHeader.php" ?>

and for the footer I put

<?php include "mainFooter.php" ?>

This worked perfectly and made me smile because my pages all came together nicely. the mainHeader has my <html> and <body> and my mainFooter has my closing tags for those.

Is this good practice?

like image 871
ItsPronounced Avatar asked Sep 10 '25 17:09

ItsPronounced


2 Answers

I include my views from my controllers. I also define file locations to make maintenance easier.

config.php

define('DIR_BASE',      dirname( dirname( __FILE__ ) ) . '/');
define('DIR_SYSTEM',    DIR_BASE . 'system/');
define('DIR_VIEWS',     DIR_SYSTEM . 'views/');
define('DIR_CTLS',      DIR_SYSTEM . 'ctls/');
define('DIR_MDLS',      DIR_SYSTEM . 'mdls/');
define('VIEW_HEADER',   DIR_VIEWS . 'header.php');
define('VIEW_NAVIGATION',   DIR_VIEWS . 'navigation.php');
define('VIEW_FOOTER',   DIR_VIEWS . 'footer.php');

Now I have all the info I need just by including config.php.

controller.php

require '../config.php';
include DIR_MDLS . 'model.php';

$model = new model();
if ( $model->getStuff() ) {
    $page_to_load = DIR_VIEWS . 'page.php';
}
else {
    $page_to_load = DIR_VIEWS . 'otherpage.php';
}

include VIEW_HEADER;
include VIEW_NAVIGATION;
include DIR_VIEWS . $page_to_load;
include VIEW_FOOTER;
like image 125
Galen Avatar answered Sep 12 '25 09:09

Galen


You can also do it the other way round. Have a main page with header/footer and include only the body.

<!DOCTYPE html>
<html lang="en">
    <head>
        ...
    </head>
    <body>
        <?php include $page ?>
    </body>
</html>
like image 39
BalusC Avatar answered Sep 12 '25 08:09

BalusC