おそらくあなたはWordpressのような機能を作成します。質問は少し広範であり、主に意見に基づいているので、これを行う唯一の方法ではなく、多くのうちの1つです。
/classes/RenderEngine.php
class RenderEngine
{
// These are just some containers
private static $renderer;
private static $topage;
private static $headElement;
// This will save to a header array
public static function addToHeader($value,$type)
{
self::$renderer[$type][] = $value;
}
// This saves to a separate array that can be used to pull
// specific types of element
public static function saveTo($val,$type)
{
self::$headElement[$type] = $val;
}
// This assembles the css/js arrays and implodes the layout(s)
public static function getLayout()
{
if(!isset(self::$renderer))
self::$renderer = array();
ob_start();
foreach(self::$renderer as $type => $val) {
if($type == 'js')
echo '<script type="text/javascript" src="'.implode('"></script>'.PHP_EOL.'<script type="text/javascript" src="',$val).'"></script>'.PHP_EOL;
elseif($type == 'css')
echo '<link rel="stylesheet" type="text/css" href="'.implode('" />'.PHP_EOL.'<link rel="stylesheet" type="text/css" href="',$val).'" />'.PHP_EOL;
}
self::$topage = ob_get_contents();
ob_end_clean();
return self::$topage;
}
// This will try and fetch any registered elements
public static function getElement($type)
{
return (!empty(self::$headElement[$type]))? self::$headElement[$type] : false;
}
}
/functions/functions.php
// General function to add the layout array(s)
function add_element($value,$type)
{
if(is_array($value)) {
foreach($value as $spot)
\RenderEngine::addToHeader($spot,$type);
}
else
\RenderEngine::addToHeader($value,$type);
}
// Uses the element array to add css
function add_css($value)
{
add_element($value,'css');
}
// Uses the element array to add js
function add_script($value)
{
add_element($value,'js');
}
// This adds to our general array
function add_header_title($value)
{
\RenderEngine::saveTo($value,'title');
}
// This renders the header
function render_header()
{
// Start a buffer to cache the string
ob_start();
// Don't store the html in the function, rather include it
include(__DIR__.'/../renderlib/render_header.php');
// Save the string
$data = ob_get_contents();
// Clear the buffer
ob_end_clean();
// Return the layout string
return $data;
}
を:Wordpressのは、これに似た何かがうまくいくかもしれないので、あなたが記述しているようにグローバルを使用するのが好き
/renderlib/render_header.php
<!DOCTYPE html>
<html>
<title><?php echo \RenderEngine::getElement('title'); // Retrieve stored element ?></title>
<head profile="http://www.w3.org/2005/10/profile">
<meta name="viewport" content="width=device-width">
<?php echo \RenderEngine::getLayout(); // Render the css/js ?>
</head>
使用するには:
// Load relevant helpers
require_once(__DIR__.'/classes/RenderEngine.php');
require_once(__DIR__.'/functions/functions.php');
// Add elements
add_css(array('/file/test/style.css','/file/test/style2.css'));
add_css('/file/test/style3.css');
add_script(array('/js/script.js','/js/script1.js'));
add_script('/js/script2.js');
add_header_title('Page Title');
// Render header
echo render_header();
はあなたを与える:
<!DOCTYPE html>
<html>
<title>Page Title</title>
<head profile="http://www.w3.org/2005/10/profile">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="/file/test/style.css" />
<link rel="stylesheet" type="text/css" href="/file/test/style2.css" />
<link rel="stylesheet" type="text/css" href="/file/test/style3.css" />
<script type="text/javascript" src="/js/script.js"></script>
<script type="text/javascript" src="/js/script1.js"></script>
<script type="text/javascript" src="/js/script2.js"></script>
</head>
1が最初に作成しようとしないのはなぜ、多分あなたの試み、そのような何かを貼り付ける... – Rasclatt
たぶんワードプレスカスタム関数? – claudios
@Rasclatt私は試しましたが、私がそれらを見せようとしたときに現れるものは何もありません。 http://pastebin.com/fJkbws5v – int11