2011-09-23 28 views
10

Co oznacza znak dolara w PHP? Mam ten kod:Co oznacza znak dolara w 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(); 
?> 

Wydaje się, że $ wskazuje zmienną jak:

$number_of_floors 
$color 

Ale ja się mylić, gdy widzę, co następuje: tam

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

Dlaczego nie znaki dolara przed tymi zmiennymi?

+10

Hm, może nadszedł czas, aby ponownie przeczytać [Odniesienie do języka PHP] (http://php.net/manual/en/langref.php) ponownie ... –

+1

Google i przeczytać podstawy PHP OOP. – Sarfraz

+0

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

Odpowiedz

12

Masz rację, $ to zmienna. Ale w instancji klasy nie użyjesz więcej $ na właściwościach, ponieważ PHP zinterpretuje to i może spowodować błąd. Na przykład, jeśli używasz

$bldgA->$number_of_floors; 

nie powróci właściwość $ number_of_floors obiektu ale PHP najpierw spojrzeć na wartość $ number_of_floors, powiedzmy 3 na przykład, więc poprzednia linia byłaby

$bldgA->3; 

I to daje błąd

+1

Dobre, łatwe do zrozumienia wyjaśnienie. – Anson

0

Tak, to zmienna z przypisaną do niej instancją klasy. A kiedy się sprzeciwia, to wywołujesz/dostajesz takie argumenty. Przeczytaj o OOP w PHP, proszę. To może być dla Ciebie bardzo przydatne i pomóc ci zrozumieć, jak to działa :)

+0

Niepoprawnie. Nie można przypisać klasy, a jedynie instancję klasy. – markus

3

$ to sposób na odnoszenie się do zmiennych w PHP. Zmienne w PHP są dynamicznie wpisywane, co oznacza, że ​​ich typ jest określony przez to, co jest do nich przypisane. Oto strona o variables z podręcznika PHP.

$ a = "To jest ciąg znaków";

$ b = 1; // To jest int

$ bldgA = nowy budynek ("czerwony"); // bldgA jest zmienną i obiektem (aka instancji) klasy Building.

$ bldgA-> describe(); // To wywołuje funkcję describe(), która jest funkcją składową klasy Building (pamiętaj, że $ bldgA została zadeklarowana jako obiekt klasy Build)

$ bldgA-> number_of_stairs; // number_of_floors jest członkiem danych klasy Building. Możesz myśleć o nim jako o zmiennej wewnątrz klasy, ale ponieważ jest to część klasy o stałej nazwie, nie odwołujesz się do niej z $.

0

$ bldgA jest zmienną dla budynku klasy

, dzięki czemu można uzyskać dostęp do funkcji klasy za pomocą $ Budownictwo-> function_name

przykład:

$foo = $bldgA->describe(); 

dolarów number_of_floors jest zmienna wewnątrz klasy

+0

$ bldgA to nie tylko zmienna – peko

+0

Tak, przepraszam, próbowałem ułatwić mu zrozumienie –

-1

Podczas pisania $bldgA = new Building('red'); przypisujesz zmienną $bldgA nowo utworzony obiekt klasy Building. Obiekty są możliwym rodzajem zmiennych.

Ogólnie, gdy widzisz $, zawsze odnosi się to do zmiennych. $bldgA->number_of_floors; należy odczytywać jako: dostęp do właściwości obiektu w zmiennej $bldgA

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

w tym przypadku $ bldgA jest obiektem.

$bldgA->describe(); 

wywołuje funkcję opisać() z obiektu $ bldgA

$bldgA->number_of_floors; 

Acces zmienne number_of_floors z obiektu $ bldgA

ale naprawdę powinieneś przyjrzeć php.net/manual/en/language.oop5.basic.php

0

$bldgA->number_of_floors; nie nazywamy zmienną lokalną, ale właściwość (to jak zmiennej lokalnej ramach definicji klasy) z klasy.

Można jednak zadzwonić pod numer $bldgA->$property_name;, gdzie $ nazwa_właściwości to nazwa właściwości, z którą chcesz się połączyć. Nazywa się to zmiennymi zmiennymi i prawdopodobnie powinieneś zajrzeć do po opanowałeś podstawy tematyczne.