首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP覆盖LessPHP变量

用PHP覆盖LessPHP变量
EN

Stack Overflow用户
提问于 2012-05-21 01:08:12
回答 1查看 642关注 0票数 1

我使用LessPHP (v0.3.4-2),阅读文档并搜索这个基本问题,但仍然没有找到正确和直接的答案。

这是我的.less文件:

代码语言:javascript
复制
@bgcolor :#ccc; 
.color(@color:#222) { color:@color; }

body {
  margin:10px auto;
 .color(@color);
 background:@bgcolor;
}

我的php代码:

代码语言:javascript
复制
<?php
include 'lessc.inc.php';

$style_setting = array (
  'color'       => '#f00',
  'bgcolor'    => '#fee'
);

$cssFile    = "stylesheet.css";
$lessFile    = new lessc("less/stylesheet.less");
file_put_contents($cssFile, $lessFile->parse(null, $style_setting));
?>

样式表结果:

代码语言:javascript
复制
body {
  margin:10px auto;
  color:#ff0000;
  background:#cccccc;
}

正如您在上面的示例中所看到的,LesPHP参数(.color(@color:#222))被覆盖,但@bgcolor变量不是。

我只是想知道LessPHP是如何工作的,还是这里漏掉了什么?为什么LessPHP变量没有被过写?

如有任何答复或提示,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-21 09:53:00

为什么不使用与@bgcolor相同的.color实现?

如果以下内容适用于@color

代码语言:javascript
复制
.color(@color:#222) { color:@color; }

那么下面的内容应该适用于@bgcolor

代码语言:javascript
复制
.bgcolor(@bgcolor:#ccc) { background:@bgcolor; }

更新,对正在发生的事情的解释:

让我们假设这都是用PHP编写的,这就是.color函数的样子:

代码语言:javascript
复制
function color($color = null) {
    if(!$color) {
        return 'color: #222;';
    }
    return 'color: $color;';
}
echo color(); //outputs "color: #222222;"
echo color('#f00'); //outputs "color: #ff0000;"
echo color(); //outputs "color: #222222;"

它接受传递的颜色值或输出默认值。现在,这就是@bgcolor变量发生的情况。

代码语言:javascript
复制
$bgcolor = '#fee';
$bgcolor = '#ccc';
echo 'color: '.$bgcolor.';'; //outputs "background: #cccccc;"

它们的关键区别在于,.color是一个可以接受值的函数,而@bgcolor是一个变量。

您已经有效地定义了您想要的东西,立即覆盖它,然后调用该变量。使其具有动态性的唯一方法是将其转换为一个“函数”,就像您在color中所做的那样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10678540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档