Переменная доступа в классе

#php #arrays #class #variables

#php #массивы #класс #переменные

Вопрос:

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

 class myclas
{
private $list=array('1','2','3');
[...]
}
  

Мне нужно получить доступ к значениям $ list таким образом: myclass::$list (ведьма не возможна).
Есть ли альтернативный способ?

Спасибо.

//Редактировать: Спасибо всем за ответ! Возможно ли использовать закрытую переменную в качестве значений для общедоступной?

 class myclas
 {
   private $_list=array('1','2','3');
   public static $staticList=$_list;
  [...]
    }
  

Прямо сейчас я получаю сообщение об ошибке «неожиданный T_VARIABLE»

Комментарии:

1. Вместо создания общедоступной переменной, которая считывает данные из частной, создайте общедоступную функцию statc, которая считывает данные из частной переменной. Затем вы вызываете функцию: myclass::myfunction()

Ответ №1:

 class myclas
{
public static $list=array('1','2','3');
}
myClass::$list;
  

Комментарии:

1. если вы хотите ограничить доступ к переменной, сделайте ее закрытой и создайте статический метод, подобный public static getList() { return self::$list; }

Ответ №2:

Смотрите это прекрасное руководство: http://php.net/manual/en/language.variables.scope.php

Ответ №3:

Это частная переменная. Если вы сделали ее общедоступной статической переменной, вы должны иметь к ней доступ:

 class myclas {
 public static $list = array('1','2','3');
}

myclas::$list;
  

Комментарии:

1. Если вы хотите сохранить свою переменную закрытой, вы можете написать общедоступную статическую функцию для извлечения значений и их возврата. Это может сделать то, что вы хотите.

Ответ №4:

Она должна быть объявлена как статическая.

Пример:

 class MyClass {

    public static $var = 'foo';
}
  

Затем для доступа: MyClass::$var;

Ответ №5:

Для вашего редактирования смотрите это другое красивое руководство о классах и видимости:

http://www.php.net/manual/en/language.oop5.visibility.php

Комментарии:

1. спасибо вам за все эти прекрасные ссылки. Эту я все еще знаю. Но я не смог спроецировать это руководство на свои проблемы… итак, я рад найти здесь некоторую помощь.