如何在将PHP文件的内容用于其他文件之前执行该文件? 处境
我将HTML和CSS与PHP变量混合在一起,这样我就可以用一个配置文件管理很多设置。这一切都很好,但我正在尝试合并和缩小CSS现在。这就产生了一个问题如何在将PHP文件的内容用于其他文件之前执行该文件? 处境,php,html,css,variables,Php,Html,Css,Variables,我将HTML和CSS与PHP变量混合在一起,这样我就可以用一个配置文件管理很多设置。这一切都很好,但我正在尝试合并和缩小CSS现在。这就产生了一个问题 问题 因为PHP脚本不会被执行,所以变量不会回显到压缩表中。这是因为file_get_contents()将内容转换为字符串 问题: 是否可以先执行文件,然后获取其内容?或者以另一种方式抓取它们的内容,这样它们仍然会被执行 文件夹 config.php base-stylesheet.php index.php 将逐字读取文件内容并将内容放
问题 因为PHP脚本不会被执行,所以变量不会回显到压缩表中。这是因为file_get_contents()将内容转换为字符串
问题: 是否可以先执行文件,然后获取其内容?或者以另一种方式抓取它们的内容,这样它们仍然会被执行
文件夹 config.php base-stylesheet.php index.php
将逐字读取文件内容并将内容放入字符串中。你需要使用的是。这将解析文件的内容。我认为您需要做的是将文件包含到PHP缓冲区中,然后缩小缓冲区
// Set files that must be minified
$cssFiles = array(
"base-styleseet.php",
“specific-stylesheet.php"
);
// Get those files
ob_start();
foreach ($cssFiles as $cssFile) {
include($cssFile);
}
// Minify and echo them
$css = minifyCSS(ob_get_clean());
echo $css;
您已经熟悉了
ob\u start()
方法
但我将展示一个更好(更快)的选择:
您的主文件:
$cssFiles = array(
"base-styleseet.php",
"specific-stylesheet.php"
);
$buffer = "";
foreach ($cssFiles as $cssFile) {
$buffer .= include($cssFile);
}
minifyCSS($buffer);
echo $buffer;
嗯,这里没什么。刚刚在那里添加了一个include()
但它不会按预期工作,除非您对每个文件都这样做:
不$priColor=#000
在#
之后被注释掉?在我使用引号的实际文件中没有,在本例中忘记了引号。现在编辑。CSS/PHP混合使用单个文件。但不是在合并和压缩它们的时候。好的。。。谢谢你的澄清:S
为什么不将数组与您希望的任何设置关联起来,并将其包含在内。我在编辑注释时有一点延迟。它有足够的内容成为一个有用的答案。所以,我用内容回答了这个问题。但是这样我就不能再缩小内容了,是吗?因为它已经被解析。或者在保存操作中解析它们(例如,在您的CMS中,样式被更新)。然后将解析后的内容存储在像base.timestamp.css
这样的文件中。这样你就不必在加载页面之前总是解析CSS,这会加快加载速度。回答得很好。Ben对Stypon答案的评论也是如此,但只有一次,所以不是每个用户都需要等待文件生成。性能更好!哇,我要跳进去了!但假设它起作用,我明白为什么它更快了。Tx.@PepijnGieles不客气。我建议你在没有亲自尝试的情况下,不要轻易给出公认的答案。EaseTechnology的答案对你有用,你也试过了。如果这对你的处境更有利,你可以接受它(如果你愿意)。@pepijngiels令人讨厌,因为你用它来绕开语言的工作方式,但不是很好。这与使用include
来获取http内容的网页报废相同。此外,如果使用gzip编码发送,可能会出现问题(由服务器自动发送,或由.htaccess
设置)。为此,它将创建一个输出缓冲区,其中的内容将回送到浏览器。现在,想象一下,当我们开始处理输出缓冲区时会发生什么…@pepijngiels同样,如果include由于某种原因失败(例如,您拼错了一个文件),您将缩小错误消息的输出。现在,您将在CSS中看到一个非常奇怪的输出,您不知道这是什么。你现在做什么?或者想象一个变量拼错了,或者你忘了设置它。您将无法轻松调试带有缩小CSS内容的代码,该内容还试图缩小其中的一些HTML。您可以禁用错误消息,但这样您就不知道是否出了问题。@pepijngiels不客气。我真希望我教过你一些东西。作为一个额外提示:当你包含一个文件时,你可以返回任何东西。您可以返回字符串、数字、数组、对象。。。任何东西这经常用于配置。例如:
/* CSS header defined */
/* config.php included */
.site-specific-element{
background-color: <?= $priColor ?>;
}
// Set files that must be minified
$cssFiles = array(
"base-styleseet.php",
"specific-stylesheet.php"
);
// Get those files
$buffer = "";
foreach ($cssFiles as $cssFile) {
$buffer .= file_get_contents($cssFile);
}
// Minify and echo them
minifyCSS($buffer);
echo $buffer;
<link rel="stylesheet" href="minified-stylesheets.php">
// Set files that must be minified
$cssFiles = array(
"base-styleseet.php",
“specific-stylesheet.php"
);
// Get those files
ob_start();
foreach ($cssFiles as $cssFile) {
include($cssFile);
}
// Minify and echo them
$css = minifyCSS(ob_get_clean());
echo $css;
$cssFiles = array(
"base-styleseet.php",
"specific-stylesheet.php"
);
$buffer = "";
foreach ($cssFiles as $cssFile) {
$buffer .= include($cssFile);
}
minifyCSS($buffer);
echo $buffer;