2011-09-23 183 views
10

美元符號在PHP中的含義是什麼?我有這樣的代碼:美元符號在PHP中的含義是什麼?

<?php 
    class Building { 
    public $number_of_floors = 5; 
    private $color; 

    public function __construct($paint) { 
     $this->color = $paint; 
    } 

    public function describe() { 
     printf('This building has %d floors. It is %s in color.', 
     $this->number_of_floors, 
     $this->color 
    ); 
    } 
    } 

    $bldgA = new Building('red'); 

    $bldgA->describe(); 
?> 

看來,$表示像變量:

$number_of_floors 
$color 

但我感到困惑,當我看到以下內容:

$bldgA->describe(); 
$bldgA->number_of_floors; 

爲什麼沒有這些變量前的美元符號?

+10

嗯,也許該再次閱讀[PHP語言參考](http://php.net/manual/en/langref.php)... –

+1

谷歌和閱讀PHP OOP的基礎知識。 – Sarfraz

+0

http://www.php.net/manual/en/language.oop5.basic.php – JJJ

回答

12

你是對的,$是變量。但是在一個類實例中,你不再對屬性使用$,因爲PHP會解釋並且這可能會導致錯誤。例如,如果您使用

$bldgA->$number_of_floors; 

這將不會返回對象的$ number_of_floors財產,但PHP會先看看$ number_of_floors的價值,讓我們說3實例,因此前一行將

$bldgA->3; 

這會給你一個錯誤

+1

好的,容易理解的解釋。 – Anson

0

是的,這是可變的與指派它的類的實例。而當它反對時,你就是這樣調用/獲取參數。請閱讀PHP中的OOP。它可以非常方便你,並幫助你瞭解它是如何工作:)

+0

錯誤。一個類不能被分配,只能是一個類的一個實例。 – markus

3

$是引用PHP中的變量的方式。 PHP中的變量是動態類型的,這意味着它們的類型由分配給它們的內容決定。這裏是關於PHP手冊中關於variables的頁面。

$ a =「這是一個字符串」;

$ b = 1; //這是一個int

$ bldgA = new Building('red'); // bldgA是類Building的變量和對象(又名實例)。

$ bldgA-> describe(); //調用describe(),它是類Building的成員函數(請記住,$ bldgA被聲明爲類Building的對象)

$ bldgA-> number_of_floors; // number_of_floors是類Building的數據成員。你可以把它看作一個類中的變量,但由於它是類名的一部分,所以你不要用$來引用它。

0

的$ bldgA是類建築

,所以你可以通過使用$ Building-訪問類的函數變量>函數名

例如:

$foo = $bldgA->describe(); 

的$ number_of_floors是變量內部的變量

+0

$ bldgA不只是一個變量 – peko

+0

是的對不起,我試圖讓他很容易理解 –

-1

在編寫$bldgA = new Building('red');時,您將變量$bldgA指定爲新創建的012類對象。對象是一種可能的變量類型。

一般而言,當您看到$時,它總是指變量。 $bldgA->number_of_floors;應閱讀:訪問對象的屬性變量$bldgA

2
$bldgA = new Building('red'); 

在這種情況下$ bldgA是一個對象。

$bldgA->describe(); 

調用函數描述()從對象$ bldgA

$bldgA->number_of_floors; 

存取權限從對象$ bldgA

變量number_of_floors,但你真的應該看看php.net/manual/en/language.oop5.basic.php

0

$bldgA->number_of_floors;不調用一個局部變量,但一類的屬性(這就像類定義的局部變量部分)。

但是可以調用$bldgA->$property_name;其中$ property_name是要調用的屬性的名稱。這被稱爲變量變量,你可能應該看看你已經掌握了OOP基礎知識。

相關問題