У меня возникли проблемы с использованием аргумента из моего класса в одной из функций этого класса.
У меня есть класс, называемый компанией:
class company { var $name; function __construct($name) { echo $name; } function name() { echo $name; } } $comp = new company('TheNameOfSomething'); $comp->name();
Когда я создаю экземпляр (вторая – последняя строка), метод построения магии отлично работает, а echo выдает «TheNameOfSomething». Однако, когда я вызываю функцию name (), я ничего не получаю.
Что я делаю не так? Любая помощь приветствуется. Если вам нужна другая информация, просто спросите!
благодаря
-Giles
http://gilesvangruisen.com/
Вам необходимо установить свойство класса с помощью этого ключевого слова $.
class company { var $name; function __construct($name) { echo $name; $this->name = $name; } function name() { echo $this->name; } } $comp = new company('TheNameOfSomething'); $comp->name();
При использовании $ name в любом из методов область переменной $ name ограничена функцией, в которой она создана. Другие методы или содержащий класс не могут прочитать переменную или даже знать, что она существует, поэтому вам нужно установить переменная класса с использованием префикса $this->
.
$this->name = $name;
Это позволяет сохранять постоянное значение и доступно для всех функций класса. Кроме того, переменная является общедоступной, поэтому любой скрипт или класс могут читать и изменять значение переменной.
$comp = new company(); $comp->name = 'Something'; $comp->name(); //echos 'Something'