Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]
Forum PHP.pl > Forum > Przedszkole
dawidg87
Dla jednych to się może wyda dziwne i oczywiste ale jednak ja nie widzę w tym kodzie czegoś co by mogło być nie tak:(
  1. <?php
  2.  
  3. class mojaklasa
  4.  {
  5.  var $atrybut = 6;
  6.  
  7. function __get($nazwa)
  8. {
  9. return $this -> nazwa;
  10. }
  11. function __set($nazwa, $wartosc)
  12. {
  13. if ( $nazwa = 'atrybut' && $wartosc >= 0 && $wartosc <= 100)
  14. $this -> atrybut = $wartosc;
  15. }
  16.  
  17.  
  18.  
  19.  }
  20.  
  21. $a = new mojaklasa();
  22.  
  23. echo $a -> atrybut;
  24.  
  25. echo "<br>";
  26.  
  27. $a -> atrybut = 101;
  28.  
  29. echo $a -> atrybut;
  30. ?>


Głównie chodzi mi o _set no bo zamieściłem tam instrukcje, a raczej przepisałem gotowy przykład z podręcznika, i według mnie ma to działać na takiej zasadzie, że gdy chcemy zmienić wartość atrybut z poza klasy to instrukcja sprawdza czy nowa właściwość żeczywiście dotyczy tego atrybutu i czy jest liczbą w przedziale 0..100, no i po za klasą zrobiłem sobie mały test tego. Czyli tworze obiekt, później sprawdzam wartość atrybutu, jest to oczywiście 6 tak jak ustawiłem w klasie, no ale zaraz potem zmieniam wartość atrybutu na 101 i znowu sprawdzam wartość atrybutu, i zamiast pokazać błąd to wyświetla atrybut z nową wartością przekraczającą ustawiony zakres :/ no chyba, że to wszystko źle zrozumiałem i to tak ma właśnie działać :/
qrees
__set i __get są używane dla atrybutów których nie ma w klasie. Jeżeli klasa ma jakiś atrybut, to jest on po prostu używany.

Poza tym, masz jeszcze jeden błąd: zamiast $nazwa = 'atrybut' powinno być $nazwa == 'atrybut'
nevt
  1. <?php
  2. if ( $nazwa = 'atrybut' && $wartosc >= 0 && $wartosc <= 100)
  3. ?>

ten warunek jest zawsze spełniony bo użyłeś operatora przypisania = zamiast operatora porównania ==, popraw:
  1. <?php
  2. if (($nazwa == 'atrybut') && ($wartosc >= 0) && ($wartosc <= 100))
  3. ?>

nawiasy dodałem dla podniesienia czytelności.
dawidg87
dzięki panowie, ale mam jeszcze jedno pytanko, a chyba szkoda zakładać kolejny temat, no więc mam pewien kod, ale umieszczę tylko wycinki:
  1. <!--
  2. body {background-color: white}
  3. h1 {color: white; font-size: 24pt; text-align: center; font-family: arial.sens-serif; front-weight: bold}
  4. .menu {color: white; font-size: 12pt; text-align: center; font-family: arial.sens-serif; front-weight: bold}
  5. rd {background: black}
  6. p {color: black; font-size: 12pt; text-align: justify; font-family: arial.sens-serif)
  7. p.foot {color: white; font-size: 9pt; text-align: center; font-family: arial.sens-serif; font-weight: bold}
  8. a:link.a:visited.a:active {color: white}
  9. -->
  10. </style>


i

  1. <table width="100%" bgcolor="black" cellpading="12" border="0">
  2. <tr>
  3. <td>
  4. <p class="foot">&copy TLA Consulting</p>
  5. <p class="foot">Prosimy odwiedzić <a href="prawne.php">stronę informacji prawnych</a></p>
  6. </td>
  7. </td>
  8. </table>


to jest kod tak samo z podręcznika, mam taki problem, że gdzieś w tym drugim mam błąd bo nie chce mi ustawić tego tak jak mam w <style> opisane, nie wiem już jak to ma być, tak jak wyżej jest w podręczniku i nie jest to dobrze biggrin.gif próbowałem już nawet zmieniać <p class="p.foot"> itp. kombinacje, ale nic to nie daje, nie wiem dlaczego :/ strasznie fajny ten podręcznik, same błędy, te kody co skopiowałem są akurat identyczne jak w podręczniku.... pomocy...
nevt
trochę nieuważnie przepisujesz... tutaj:
Kod
p {color: black; font-size: 12pt; text-align: justify; font-family: arial.sens-serif)

źle zamknąłeś znacznik - ) zmiast } i zamieniłeś spacje na . powinno być:
Kod
p {color: black; font-size: 12pt; text-align: justify; font-family: arial sens-serif}

natomiast tutaj:
Kod
a:link.a:visited.a:active {color: white}

"posklejałeś" kilka znaczników (gdzieś przepadły ci przecinki i odstępy - zamienione na .), powinno być:
Kod
a:link, a:visited, a:active {color: white}

a na koniec zauwazyłem, że wszędzie jest:
Kod
Font-family: arial.sens-serif ZAMIAST font-family: arial sens-serif


więc kolego - albo nie rozróżniasz separatorów przy przepisywaniu, albo ta książka nadaje sie na podstawkę pod kubek z kawą...
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.