2009-10-24 3 views
3

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

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

class company { 

    var $name; 

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

    function name() { 
     echo $name; 
    } 
} 

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

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

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

Благодаря
-Giles
http://gilesvangruisen.com/

ответ

11

Вы должны установить свойство класса, используя $ это ключевое слово.

class company { 

    var $name; 

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

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

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

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

$this->name = $name; 

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

$comp = new company(); 

$comp->name = 'Something'; 

$comp->name(); //echos 'Something' 
Смежные вопросы