too long

At the very top of my page/site, before <!doctype html> etc., I load my classes with spl_autoload_register().

One of the classes is site, and inside this class I have a static function:

<?php
/**
 *  A fast and easy way to include content to a page...
 *  "dir_pages_contents" is a defined constant with the path to the content files
 */
public static function include_content($content_name){
    if(file_exists(dir_pages_contents.$content_name.'.cont.php')){
        include dir_pages_contents.$content_name.'.cont.php';
    } else {
        /*  echo an error message  */
    }
}
?>

I was hoping to do something like this i practice:

  1. create a new document with some content and save it with the extension .cont.php into a folder specified for page contents.
  2. Then; On the page where I want this content to be displayed - I do:

    site::include_content('test_doc');

This almost works; The document, or content, is included and displayed.
But it seems like it is included where the class is - at the very top where the class is - because PHP-variables set outside of this document is not available within the document at all.

Here's a illustration of the setup:

test_doc.cont.php

<?=$hello?>

index.php

<!--  PHP-classes are included here  -->
<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Untitled Document</title>
</head>

<body>
<?php $hello = 'Im outside...'; ?>

<!--  this includes the document, but the variable $hello is not  -->
<?=site::include_content('test_doc')?>

<!--  this works perfectly  -->
<?php include dir_pages_contents.'test_doc.cont.php; ?>

</body>
</html>

The inclusion of a separate file, or document, is done immediately when the include-statement is read by the script i guess? but not displayed until futher down the script where the function was called?

Any suggestion for another way to accomplish this?

I'm not looking for any MVC or other PHP-framework.

EDIT:
user1612290 pointed out to me that the include-statement within my include_content-function only uses the variable scope of my function - meaning that any variables decleared outside my include_content is not passed to the include directive unless I make them global.

It was also suggested that I could pass an array of named keys=>$variables into my function and use extract() on them to make them available.

This is what I came up with:
- added $arr

public static function include_content($content_name,$arr){
    if(file_exists(dir_pages_contents.$content_name.'.cont.php')){
        if (is_array($arr)){extract($arr);}
        include dir_pages_contents.$content_name.'.cont.php';
    } else {
        /*  echo an error message  */
    }
}

Now I'm able to do this:

<?=site::include_content('test_doc',array('hello'=>$hello))?>

Allthoug I'm not happy with this solution, I now have the variables accessable within the included document - so I'm closer than I was an hour ago :)

Any easier way?