1

私はLessPHP(v0.3.4-2)を使用し、ドキュメントを読み、この-basic-質問を検索しましたが、それでも正解は見つかりませんでした。

これが私の.lessファイルです:

@bgcolor :#ccc; 
.color(@color:#222) { color:@color; }

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

私のphpコード:

<?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));
?>

スタイルシートの結果:

body {
  margin:10px auto;
  color:#ff0000;
  background:#cccccc;
}

上記の例でわかるように、LesPHP引数(.color(@color:#222))は上書きされますが、@bgcolor変数は上書きされません。

LessPHPがどのように機能するのか、それともここで何かが足りないのでしょうか。LessPHP変数が上書きされないのはなぜですか?

任意の答えやヒントをいただければ幸いです。

4

1 に答える 1

2

と同じ実装を@bgcolorしてみません.colorか?

以下が機能する場合@color

.color(@color:#222) { color:@color; }

次に、以下が機能するはずです@bgcolor

.bgcolor(@bgcolor:#ccc) { background:@bgcolor; }

更新、何が起こっているかの説明:

これがすべてPHPで書かれていると仮定しましょう。これは、.color 関数がどのようになるかを示しています。

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 さて、これは変数で起こっていることです:

$bgcolor = '#fee';
$bgcolor = '#ccc';
echo 'color: '.$bgcolor.';'; //outputs "background: #cccccc;"

それらの主な違いは、それ.colorが値を取ることができる関数で@bgcolorあり、変数であるということです。

必要なものを効果的に定義し、すぐに上書きしてから変数を呼び出しました。動的にする唯一の方法は、のように「関数」に変換することですcolor

于 2012-05-21T09:53:00.100 に答える