PHP类功能不起作用

时间:2009-06-16 21:35:41

标签: php

我是PHP和Web脚本的新手,所以这是一个新问题。

目前我正在创建一个对象的实例,但是当我调用构造函数时 脚本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的托管服务提供商上运行。

4 个答案:

答案 0 :(得分:9)

您需要使用以下命令访问成员变量:

$this->variableName

$this->$variableName

答案 1 :(得分:3)

    $this->$ssProductName = $ssProd;

应该是

    $this->ssProductName = $ssProd;

在&gt;

之后没有$

答案 2 :(得分:1)

语法$this->$foo是引用class属性的variable variable,其值为$foo。因此,如果$foo的值为bar,则$this->$foo将引用$foo->bar而不是$this->foo

所以,只需删除$之后的$this->即可。

答案 3 :(得分:0)

那是因为你的php脚本是错误的。要捕获此类错误,您应该在调试服务器上运行它(display_errors设置为On)或使用其他日志记录方法。

然而,主要问题是你以错误的方式访问对象成员;没有第二个美元符号。而不是

$this->$ssProductName = $ssProd;

使用

$this->ssProductName = $ssProd;