2009-06-16 4 views
0

Я новичок в PHP и веб-скриптах вообще, так что это вопрос newb.Функция класса 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

Я понимаю, что вы забыли ведущий Не требуется. – phihag

+1

Похоже, у вас установлено значение display_errors, или error_reporting ничего не показывает, или обе эти проблемы. –

+1

Я думаю, что ключевое слово var устарело в 5. Включите свои ошибки и сообщите им об этом :) через error_reporting (E_ALL) –

ответ

9

Вы должны получить доступ к переменным-членам:

$this->variableName 

нет:

$this->$variableName 
+0

Thankyou все для вашей помощи. И да, теперь у меня включен display_error. :-) – 2009-06-17 02:34:48

3
$this->$ssProductName = $ssProd; 

должно быть

$this->ssProductName = $ssProd; 

нет $ после ->

1

Синтаксис $this->$foo - это variable variable, ссылающийся на атрибут класса с именем значения $foo. Поэтому, если $foo имеет значение bar, $this->$foo будет ссылаться на $foo->bar, а не $this->foo.

Так что просто удалите $ после $this->, и он должен работать.

0

Это потому, что ваш PHP-скрипт ошибочен. Чтобы поймать такие ошибки, вы должны запустить его на сервере отладки (с display_errors, установленным на On) или использовать другие методы ведения журнала.

Однако основная проблема заключается в том, что вы неправильно обращаетесь к членам объекта; нет второго знака доллара. Вместо

$this->$ssProductName = $ssProd; 

использования

$this->ssProductName = $ssProd; 
Смежные вопросы