Область действия переменных в классе PHP - PullRequest
9 голосов
/ 07 декабря 2010

Как я могу установить глобальную переменную в этом классе?Я пробовал это:

class myClass
{
   $test = "The Test Worked!";
   function example()
   {
      echo $test;
   }
   function example2()
   {
      echo $test." again";
   }
}

, который не смог загрузить страницу полностью, ссылаясь на ошибку 500.Затем я попробовал это:

class myClass
{
   public $test = "The Test Worked!";
   function example()
   {
      echo $test;
   }
   function example2()
   {
      echo $test." again";
   }
}

Но когда я напечатал оба из них, все, что я вижу, это «снова» Извините за такой простой вопрос!

Ответы [ 5 ]

19 голосов
/ 07 декабря 2010

эта переменная может быть доступна следующим образом

echo $this->test;
8 голосов
/ 07 декабря 2010

Если вы хотите переменную экземпляра (сохраняется только для этого экземпляра класса), используйте:

$this->test

(как предложил другой ответ).

Если вы хотите "класс""Переменная, префикс его с ключевым словом" static ", например:

Переменная класса отличается от переменной экземпляра тем, что все экземпляры объекта, созданные из класса, будут иметь одну и ту же переменную.

(Обратите внимание, что для доступа к переменным класса используйте Имя класса или «self», за которым следует «::»)

class myClass
{
   public static $test = "The Test Worked!";
   function example()
   {
      echo self::$test;
   }
   function example2()
   {
      echo self::$test." again";
   }
}

Наконец, если вы хотите истинную константу (неизменяемую), используйте «const» перед (снова получите доступ к нему с помощью «self» плюс «::» плюс имя константы (хотя на этот раз пропустите «$»):

class myClass
{
   const test = "The Test Worked!";
   function example()
   {
      echo self::test;
   }
   function example2()
   {
      echo self::test." again";
   }
}
5 голосов
/ 07 декабря 2010
class Foo {

    public $bar = 'bar';

    function baz() {
        $bar;  // refers to local variable inside function, currently undefined

        $this->bar;  // refers to property $bar of $this object,
                     // i.e. the value 'bar'
    }
}

$foo = new Foo();
$foo->bar;  // refers to property $bar of object $foo, i.e. the value 'bar'

Пожалуйста, начните читать здесь: http://php.net/manual/en/language.oop5.basic.php

3 голосов
/ 07 декабря 2010

на самом деле есть два способа получить доступ к переменной или функции в классе изнутри класса или вне его, если они запрашивают элемент public (или в некоторых случаях защищенный)

class myClass
{
   public $test = "The Test Worked!";
   function example()
   {
      echo $this->test;
      // or with the scope resolution operator
      echo myClass::test;
   }
   function example2()
   {
      echo $this->test." again";
      // or with the scope resolution operator
      echo myClass::test." again";
   }
}
1 голос
/ 07 декабря 2010

Попробуйте добавить $this в начало ваших переменных;Вы можете изменить второй пример на

class myClass {
   public $test = "The Test Worked!";

   function example() {
      echo $this->test;
   }

   function example2(){
      echo $this->test." again";
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...