2014-06-20 78 views
0

我是PHP新手,但來自Java背景。我在用下面的代碼混淆:PHP中的變量帶來的麻煩

class Student 
{ 
    //public $name; 
    public function __construct($name) 
    { 
     $this->name=$name; 
    } 
    public function showname() 
    { 
     echo $this->name; 
    } 
} 

在上面的代碼,如果我評論線public $name;它仍然有效。但是,在Java中它不應該工作。我想在PHP中理解這種行爲。

+1

那麼什麼是你的問題dupliacte? PHP和Java是不同的。您不必在PHP中預先定義公共類變量。 – naththedeveloper

+0

是的,PHP爲你做的(我認爲他們默認爲「public」)。 – kero

+0

通過聲明'$ this-> name',您可以將'name'的屬性添加到'$ this'中。如果你聲明它是公開的,你可以在類範圍之外訪問它。如果你聲明它是私有的,當你嘗試從類之外訪問它時,PHP會拋出錯誤。所以,我認爲即使你沒有聲明爲私人,保護或公開,它也可以在班級範圍內工作。 – iamsleepy

回答

0

PHP使用屬性的隱式聲明。你可以從任何地方(甚至從課外)聲明和分配一個屬性。

<?php 
$object1 = new User(); 
$object1->name = "Alice"; 
echo $object1->name; 
class User {} 
?> 

將正常工作和打印「愛麗絲」 ......

1

答案很簡單,在你的構造函數中,你要用$ this調用的每個變量都將在你的類中創建,它相當於在你的類中聲明它,然後使用它。

0

PHP是一種鬆散類型的語言。與Java等語言不同,您不需要在類中聲明字段以使用它們。通過在構造函數中設置名稱,該字段被創建並設置。

如果要在構造函數中刪除構造函數或字段設置,那麼在調用showname()時名稱將不存在。