Ostatnio zwiększam swoją grę PHP. Pochodząc z JavaScriptu, odkryłem, że model obiektu jest nieco prostszy do zrozumienia.Dostęp do własności PHP i znak dolara
Wpadłem w kilka dziwactw, które chciałem wyjaśnić, czego nie mogę znaleźć w dokumentacji.
Podczas definiowania klas w PHP, możesz zdefiniować właściwości tak:
class myClass {
public $myProp = "myProp";
static $anotherProp = "anotherProp";
}
ze zmienną publiczną $myProp
możemy do niego dostęp za pomocą (zakładając myClass
jest wymieniony w zmiennej o nazwie $myClass
) $myClass->myProp
bez użycia znaku dolara.
Możemy uzyskać dostęp do zmiennych statycznych za pomocą ::
. Tak więc możemy uzyskać dostęp do zmiennej statycznej, takiej jak $myClass::$anotherProp
ze znakiem dolara.
Pytanie brzmi, dlaczego musimy używać znaku dolara z ::
, a nie ->
?
EDIT
Jest to kod Przypuszczam będzie działać (i robi):
class SethensClass {
static public $SethensProp = "This is my prop!";
}
$myClass = new SethensClass;
echo $myClass::$SethensProp;
Interesujące ... Jedna próba i jedna bliska prośba. – Sethen
Przepraszamy za komentarze tutaj [inne twoje pytanie] (http://stackoverflow.com/q/17681253/20578) (które, jeśli zostanie zadane jako seria indywidualnych pytań, ja osobiście uważałem, że byłoby dobrze - zobacz np. Http: //stackoverflow.com/questions/15270843/what-does-plus-operator-mean-in-underscore-js), ale powiedzenie czegoś takiego jak "najlepsza praktyka mówi, aby to zrobić" jest nieco bezsensowne. Jeśli nie potrafisz wytłumaczyć, * dlaczego * uważasz, że coś jest "najlepszą praktyką", to skąd wiesz, że jest "najlepsza"? Różne rzeczy są najlepsze w różnych sytuacjach. –
@ PaulD.Waite W porządku. Jako programista starający się posunąć naprzód swój rozwój, zadając pytania o to, czy dana biblioteka przestrzega najlepszych praktyk, aby pomóc im się uczyć, jest w moim mniemaniu do przyjęcia. Dla całej społeczności brak wsparcia, co jest bardzo frustrujące. Nie wierzę, że konkretna biblioteka została napisana przy użyciu sprawdzonych metod i staram się upewnić, że jest to coś, czego nie robię źle, więc kiedy dodam kod, mogę być pewny, że jest najlepszy. – Sethen