PHP-код не выполняется? - PullRequest
1 голос
/ 15 января 2010
<?php
class abhi
{
    var $contents="default_abhi";

    function abhi($contents)
    {
        $this->$contents = $contents;
    }

    function get_whats_there()
    {
        return $this->$contents;
    }

}

$abhilash = new abhi("abhibutu");
echo $abhilash->get_whats_there();

?>

Я инициализировал переменное содержимое по умолчанию, а также конструктор, почему значение не печатается, все, что я должен исправить здесь?

смотри ошибку,

abhilash@abhilash:~$ php5 pgm2.php 

Fatal error: Cannot access empty property in /home/abhilash/pgm2.php on line 13
abhilash@abhilash:~$ 

Ответы [ 7 ]

14 голосов
/ 15 января 2010

Вы неправильно возвращаете переменную внутри функции. Должно быть:

return $this->contents
5 голосов
/ 15 января 2010

Так как вопрос помечен как "php 5 ", вот пример вашего класса с нотацией php5 (т.е. public / protected / private вместо var, public / protected /закрытая функция, __construct () вместо classname (), ...)

class abhi {
  protected $contents="default_abhi";

  public function __construct($contents) {
    $this->contents = $contents;
  }

  public function get_whats_there() {
    return $this->contents;
  }
}

$abhilash = new abhi("abhibutu");
echo $abhilash->get_whats_there();
4 голосов
/ 15 января 2010

Если я правильно помню, это будет

$this->contents = $contents;

не

$this->$contents = $contents;
3 голосов
/ 15 января 2010

Должен быть доступ и запись в $ this-> содержимое, а не в $ this -> $ contents

1 голос
/ 15 января 2010

Кроме того, вы не пропускаете знак доллара в "echo abhilash-> get_whats_there ();"? ($ Abhilash -> ..)

0 голосов
/ 15 января 2010

У вас проблема с $: 1. при использовании $ this-> вы не ставите $ между "->" и именем переменной знаком "$", поэтому ваше содержимое $ this -> $ должно быть содержимым $ this->. 2. в своем эхо вы забыли $ при вызове этой функции из экземпляра класса.

Итак, ваш правильный код:

<?php
class abhi
{
    var $contents="default_abhi";

    function abhi($contents)
    {
        $this->contents = $contents;
    }

    function get_whats_there()
    {
        return $this->contents;
    }

}

$abhilash = new abhi("abhibutu");
echo $abhilash->get_whats_there();

?>
0 голосов
/ 15 января 2010

используйте $ this-> содержимое
у меня тоже сначала была такая же проблема

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...