Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php5] obiekt i dowolna wlasciwosc
Forum PHP.pl > Forum > PHP
be2k
witam
dlaczego taki kod nie powoduje bledu nie powoduje bledu lub warningu:
  1. <?
  2. $jakasDowolnaNazwa->kolejnaDowolnaNazwa=wartosc;
  3. ?>

w skrypcie php jest tylko tylko ta jedna linia, wiec nie ma stworzonego zadnego obiektu (questionmark.gif).

To pierwsza sprawa a druga to taka ze cos takiego rowniez nie powoduje bledu lub warningu:
  1. <?
  2. class myClass
  3. {
  4.  private $zm;
  5.  
  6.  function test()
  7.  {
  8.  echo 'test';
  9.  }
  10. }
  11. $myObj=new myClass();
  12. $myObj->wymyslonaWlasciwosc=wartosc;
  13. ?>

przeciez nie ma takiej wlasciwosci jak 'wymyslonaWlasciwosc'?

oczywiscie pokazywanie bledow i warningow jest wlaczone
kubarek
jak nie ma takiej zmiennej w obiekcie, to się automatycznie tworzy

ale jeśli użyjesz już np.
Kod
$myObj->innaWartosc++;

a wcześniej nie było w obiekcie czegoś takiego jak innaWartosc, to interpreter zglosi blad
matix
Takie coś to się nazywa setter, czyli mozesz dodawać poza klasą wartości. Nie masz tego zdefiniowanego, ale po dodaniu tego:

  1. <?php
  2. public function __set($n, $v)
  3. {
  4. $this-> $n = $v;
  5. print 'Dodano do klasy: $this -> '.$n.' wartosc .'$v;
  6. }
  7. ?>


Zauważysz w jaki to sposób dziala.
be2k
ok, wiem jak dziala metoda __set. rozumialbym to ze moj skrypt dziala jak dziala gdybym wlasnie mial ta metode zdefiniowana w ciele klasy, ale nie mam, wiec dlaczego dziala tak jak dziala?
Cysiaczek
Tworzy się w ten sposób właściwość publiczną. Gdbybyś posiadał już zdefiniowaną taka nazwę składowej i oznaczoną jako prywatna albo choniona, to php zgłosiłoby błąd. Czasami jest to przydatne.

Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.