2009-06-16 4 views
0

私はPHPとウェブスクリプトの新機能ですので、これは新しい質問です。PHPクラスの機能が動作しない

現在、私はオブジェクトのインスタンスを作成していますが、コンストラクタを呼び出すと、 スクリプトslientyがシャットダウンします。次の関数が呼び出されず、理由がわかりません。 何か歓迎します。

ここにコードがあります。

<?php 
class product { 
    var $ssProductName; 
    var $ssVendorName; 
    var $ssDescr; 
    var $ssURI; 

    // Clean constructor, strings must be cleaned before use 
    function __construct($ssProd, $ssVendor, $ssD, $ssU) { 
     $this->$ssProductName = $ssProd; 
     $this->$ssVendorName = $ssVendor; 
     $this->$ssDescr = $ssD; 
     $this->$ssURI = $ssU; 
    } 

    // print a table of the values 
    function DisplayOneEntry() { 

     echo '<table border="1"> 
        <tr> 
        <td>'.$this->$ssProductName.'</td> 
        <td>'.$this->$ssVendorName.'</td> 
        <td>'.$this->$ssDescr.'</td> 
        <td>'.$this->$ssURI.'</td> 
        </tr> 
        </table>'; 
    } 

} 

echo "<HTML>"; 
echo "A"; 
$newP = new product("Redhat", "Redhat corp", "Leader in", "www.redhat.com"); 
echo "B"; 
$newP->DisplayOneEntry(); 

echo "</HTML>"; 
?> 

しかし、出力はちょうど次のとおりです。次に

<HTML> 
A 

何もありません。

これは、php 5.2.9およびApache 2.2を使用してホスティングプロバイダで実行されています。

+0

$this->$ssProductName = $ssProd; 

使用の私はそれはあなたがリードする<?phpのを忘れてしまった取りますか? Btw、後ろ?>は必要ありません。 – phihag

+1

display_errorsがOffに設定されているか、何も表示されていないerror_reporting、またはこれらの両方の問題があるようです。 –

+1

私はvarキーワードが5で廃止されていると思います。あなたのエラーをオンにして、それらを提供してください:) error_reporting(E_ALL) –

答えて

9

あなたはとメンバ変数にアクセスする必要があります。

$this->variableName 

ない:

$this->$variableName 
+0

ありがとうすべてあなたの助けになります。そして今、私はdisplay_errorをオンにしました。 :-) –

3
$this->$ssProductName = $ssProd; 

は後

$this->ssProductName = $ssProd; 

なし$でなければなりません - >

1

構文$this->$fooは、$fooという名前のクラス属性を参照するvariable variableです。したがって、$fooの値がbarの場合、$this->$foo$foo->barであり、$this->fooではありません。

したがって、$$this->の後に削除しても問題ありません。

0

あなたのPHPスクリプトが間違っているからです。このようなエラーを検出するには、デバッグサーバー(display_errorsOnに設定されている)で実行するか、その他のログ方法を使用する必要があります。

しかし、主な問題はオブジェクトメンバーに間違った方法でアクセスしていることです。二番目のドル記号はありません。代わりに

$this->ssProductName = $ssProd;