2

私はphpsassをテストするために非常に単純なコードを使用しています

$sass = new SassParser();
$c = file_get_contents('/_www/_projects/cdn/public_html/test/test.sass');
$css = $sass->toCss($c);

sass ファイルは非常に基本的なものです。

$blue: #3bbfce;
$margin: 16px;

table.hl {
  margin: 2em 0;
  td.ln {
    text-align: right;
  }
}

li {
  font: {
    family: serif;
    weight: bold;
    size: 1.2em;
  }
}

.content-navigation {
  border-color: $blue;
  color:
    darken($blue, 9%);
}

.border {
  padding: $margin / 2;
  margin: $margin / 2;
  border-color: $blue;
}

そして、次のエラーが表示されます。

致命的なエラー: D:\_www\_git\phpsass\script\literals\SassNumber.php 行 201 のメッセージ ' で例外 'SassNumberException' がキャッチされませんでした

SassNumberException: 数値は数値でなければなりません: Array::26 ソース: パディング: $margin / 2; D:\_www\_git\phpsass\script\literals\SassNumber.php の 201 行目

それが役立つ場合は、以前にスローされた次の通知もあります (error_reporting レベルを変更しようとしましたが、もちろん通知を非表示にしても問題は解決しませんでした):

注意: D:\_www\_git\phpsass\SassException.php の 25 行目の配列から文字列への変換

http://www.phpsass.com/try/でオンライン PHP コンパイラに対して同じ sass コードを使用すると、正しくコンパイルされます... わかりません

4

3 に答える 3

3

SassParser クラスを見てください。この関数には、デフォルトでtoCss()と呼ばれる 2 番目のパラメーターがあります。$isFiletrue

public function toCss($source, $isFile = true) {
    return $this->parse($source, $isFile)->render();
}

気づいたら、ファイル名ではなくソースを渡しています。次のようにファイル名を渡すことができます。

$sass = new SassParser();
$c = '/_www/_projects/cdn/public_html/test/test.sass';
$css = $sass->toCss($c);

または、やろうとしていることを実行しますが、追加のパラメーター on を使用しますtoCss()

$sass = new SassParser();
$c = file_get_contents('/_www/_projects/cdn/public_html/test/test.sass');
$css = $sass->toCss($c, false);
于 2013-03-07T20:14:10.197 に答える
2

あなたのsassファイルは実際にはsassではありません。これは正しい構文であり、基本的に末尾のセミコロンをすべて削除します。

$blue: #3bbfce
$margin: 16px

table.hl {
  margin: 2em 0
  td.ln {
    text-align: right
  }
}

li {
  font: {
    family: serif
    weight: bold
    size: 1.2em
  }
}

.content-navigation {
  border-color: $blue
  color
    darken($blue, 9%)
}

.border {
  padding: $margin / 2
  margin: $margin / 2
  border-color: $blue
}

または、あなたが提案したように:

$sass = new SassParser(['syntax' => SassFile::SCSS]);
于 2013-03-14T03:27:45.337 に答える
1

実際、それは純粋な構文上の問題でした。私はsassコードから変数を削除しようとしましたが、それが機能することに気付きました-うまくいきませんでした(margin: 2em 0になりましたmargin: 20)が、エラーはもうありませんでした。

http://sass-lang.com/から取得したsassスニペットは、sassではなくscss形式でした。SassParserクラスには、構文と呼ばれるパラメーターがあります。これは、デフォルトで「sass」に設定されており、を呼び出すときにscssに設定する必要があります$scss = new SassParser(['syntax' => 'scss'])

ただし、ファイルではなく文字列を解析する必要がありましたが、scss拡張子を持つファイルを渡す場合は、この追加のパラメーターは必要ありません。

于 2013-03-08T05:25:13.273 に答える