Аргументы класса PHP в функциях - PullRequest
3 голосов
/ 24 октября 2009

У меня проблемы с использованием аргумента из моего класса в одной из функций этого класса.

У меня есть класс под названием company:

class company {

   var $name;

   function __construct($name) {
      echo $name;
   }

   function name() {
      echo $name;
   }
}

$comp = new company('TheNameOfSomething');
$comp->name();

Когда я создаю его экземпляр (со второй по последнюю строку), магический метод конструкции работает нормально и выдает «TheNameOfSomething» Однако когда я вызываю функцию name (), я ничего не получаю.

Что я делаю не так? Любая помощь очень ценится. Если вам нужна другая информация, просто спросите!

Спасибо
-Giles
http://gilesvangruisen.com/

Ответы [ 2 ]

12 голосов
/ 24 октября 2009

Вам необходимо установить свойство класса с помощью ключевого слова $ this.

class company {

   var $name;

   function __construct($name) {
      echo $name;
      $this->name = $name;
   }

   function name() {
      echo $this->name;
   }
}

$comp = new company('TheNameOfSomething');
$comp->name();
1 голос
/ 24 октября 2009

При использовании $ name в любом из методов область действия переменной $ name ограничивается функцией, в которой она создается. Другие методы или содержащий класс не могут прочитать переменную или даже узнать, что она существует, поэтому вы необходимо установить переменную класса, используя префикс $this->.

$this->name = $name;

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

$comp = new company();

$comp->name = 'Something';

$comp->name(); //echos 'Something'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...