0

次のコード行で、この不可解な nbotice を取得しています。

$this->$aStyles = $aStyles;

このコード行は、この関数に含まれています。

private function cleanStyles()
{
    if ((isset($this->sValue))&&($this->sValue))
    {
        $this->aStyles = array();
        return true;
    }
    $aStyles = array();
    foreach ($this->aStyles as $oStyle)
        if ($oStyle->cleanStyles())
            $aStyles[] = $oStyle;
    $this->$aStyles = $aStyles;
    return (count($this->$aStyles)>0);
}

この通知が表示される理由について何か考えはありますか?

役立つ場合に備えて、私がやろうとしていることについての背景を少し説明します。Excel レポートを表すオブジェクト階層があります。階層は phpExcel と通信して、実際にレポートを描画します。描画の準備をするときに階層が実行する手順の 1 つは、スタイル配列をクリーンアップすることです。

スタイル オブジェクトには、スタイル オブジェクトの配列を含めることも、値を含めることもできます。

cleanStyles は再帰的にスタイルをクリーンアップすることになっているため、存在するすべてのスタイルに値または有効なスタイルの配列があることを確認することにより、有効な phpExcel スタイル配列に変換できます。

4

1 に答える 1

1

プロパティの間接参照から記号を削除$します。

$this->aStyles = $aStyles;
------^

$aStylesphpがオブジェクト値にアクセスしようとする前に評価しようとしているため、コードは機能しませんでした。この場合、aStylesは配列であるため、その構文はaStyles文字列である場合にのみ有効であるため、通知が表示されます。

于 2012-04-18T06:14:17.087 に答える