2015-07-30 4 views
0

Почему в методе greet() не следует добавить параметр $firstname в объявление функции?Метод определения класса PHP

Неправильно:

public function greet($firstname){ 
     echo "Bonjour, mon nom est ". $this->firstname . "Ravi de vous rencontrer ! :-)"; 
    } 

Правильно:

class Person { 
    public $isAlive = true; 
    public $firstname; 

    public function __construct($firstname,$lastname,$age){ 
     $this->firstname = $firstname;   
    } 

    public function greet(){ 
     echo "Bonjour, mon nom est ". $this->firstname . "Ravi de vous rencontrer ! :-)"; 
    }     
    } 
+0

Beca используйте доступ к свойству класса, а не локальной переменной?! – Rizier123

+1

'$ firstname' и' $ this-> firstname' различаются по объему. И не то же самое. – frz3993

ответ

0

Если вы не объявляете,

public $firstname; 

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

0

Если вы добавите это как аргумент функции greet(), вы просто возвращаете значение, которое вы переходите на greet(). То, как у вас есть это значение, задается конструктором класса как членом данных, и это, вероятно, то, что вы хотите, поскольку информация связана с экземпляром класса, и вы хотите, чтобы он оставался сохраненным между вызовами greet().

Надеюсь, это объяснит это!

0

Это потому, что вам не нужно передавать никакие значения $, чтобы функционировать, если вам не нужно. Все зависит от формы объявления функции.

Здесь u должен передать $ param.

public function greet($param){ 
} 

Здесь и `t:

public function greet(){ 
} 

Здесь и можно, но у не должны:

public function gree($param = null){ 
} 

Любой метод, который объявлен внутри класса имеют доступ к свойства, которые находятся здесь с $ this, например:

class newClass { 

public $param; 

public function sayName(){ 
return $this->param; 
} 

} 
Смежные вопросы