Problem ze zrozumieniem fragmentu kodu

0

Usiłuję zrozumieć fragment kodu php zawartego w rozdziale na temat obiektowego pisania skryptu.
To jest fragment:

$this -> WyswietlPrzycisk($szerokosc, $nazwa, $url,!$this->CzytoaktualnyUrl($url));

$szerokosc:wiem.
$nazwa i $url tez wiem,bo chodzi o pętlę foreach.
Nie wiem natomiast jak mam rozumiec to ostatnie tzn.:

!$this -> CzytoaktualnyUrl($url)

Dla jasności, funkcja "czytoaktualnyurl" sprawdza czy url przycisku jest taki sam jak url obecnej strony.

0

jeśli funkcja CzytoaktaalnyUrl() w obiekcie $this zwraca true albo false to !$this->CzytoaktualnyUrl() zwróci wartość przeciwną do niej (operator ! to negacja).

0

jeśli funkcja CzytoaktualnyUrl sprawdza czy url przycisku jest taki sam jak url obecnej storny, jeśli tak zwraca true jeśli nie - zwraca false. Wykrzyknik z przodu odwraca tą zależność: jeśli adresy są takie same to zwraca false, jeśli rózne to true. Natomiast nie mamy pojęcia po co ten parametr w metodzie "WyswietlPrzycisk" bo skąd ją mamy znać?

0
misiakufal napisał(a):

jeśli funkcja CzytoaktualnyUrl sprawdza czy url przycisku jest taki sam jak url obecnej storny, jeśli tak zwraca true jeśli nie - zwraca false. Wykrzyknik z przodu odwraca tą zależność: jeśli adresy są takie same to zwraca false, jeśli rózne to true. Natomiast nie mamy pojęcia po co ten parametr w metodzie "WyswietlPrzycisk" bo skąd ją mamy znać?

Okej, to już mnie na coś naprowadziło. Nie podałem więcej szczegółow, bo kod tego listingu jest na dwie strony a4 i jeszcze by mnie ktoś zjechał, że bałaganie na forum. Poza tym bardzo dużo z tego listnigu rozumiem. Właściwie mącił mi w głowie tylko ten fragment. Przyjrzę się jeszcze raz temu listingowi i jak jeszcze czegoś nie będę kumał to dam znac.

0

Dobra, to wrzucam trochę więcej kodu, bo jednak czegoś nie rozumiem.
Fragment:
$przyciski=array(...) - to jest tablica asocjacyjna z przyciskami.

public function WyswietlMenu($przyciski)
{ 
      echo "<table width=\"100%\"><tr>\n";
     //obliczenie wielkosci przycisku
    $szerokosc = 100/count($przyciski);
         foreach ($przyciski as $nazwa => $url)
            {
                    $this->WyswietlPrzycisk($szerokosc,$nazwa,$url,!this->CzytoaktualnyAdres($url));
              } 
          echo "</tr></table>";

}

Czego natomiast nie rozumiem? A tego, po jakiego czorta w tej funkcji WyswietlMenu została zastosowana negacja:
!this->CzytoaktualnyAdres($url) ? Co mi daje ta negacja?

ps. nie zwracajcie uwagi na to, że brakuje elementu "". Pominąłem go, żeby nie komplikować kodu.
Aha, jeszcze a propoS metody WyswietlPrzycisk - wrzucam kod:

public function WyswietlPrzycisk($szerokosc,$nazwa,$url,$active=true)
{
     if (active) {kod; }
    else {kod; }
}

Przede wszystkim nie wiem co to jest "active"? za co odpowiada raz dlaczego jest ustawiona na true?

0

$active zapewne zmienia wygląd buttona oraz to, czy jest on "klikalny".
Dlatego też zastosowana została tam negacja - ponieważ klikalny ma być każdy przycisk, oprócz tego, który jest aktualnie aktywny.

0

Kurcze, teraz z kolei wyświetla mi błąd: "Function name must be a string" w linii z ifem:

public function CzytoaktualnuadresUrl($url)
		{
			if (strpos($_SERVER('PHP_SELF'),$url)==false)
			{
				return false;
			}
			else
			{
				return true;
			}
		}

Zupełnie nie wiem o co jemu chodzi.

0
$_SERVER('PHP_SELF')

$_SERVER to tablica, a nie funkcja.

Poza tym dlaczego nie po ludzku return strpos(...);? :|

0
Patryk27 napisał(a):
$_SERVER('PHP_SELF')

$_SERVER to tablica, a nie funkcja.

Poza tym dlaczego nie po ludzku return strpos(...);? :|

Już wyjasniam...
Jakby to powiedzieć: nic nie poradzę na to, że przerabiam książkę "php. tworzenie stron vademecum profesjonalisty". Pytanie, które mi zadajesz, można by zadać autorowi książki, bo prawda jest taka, że przerabiam ją krok po kroku. Do tej pory nie miałem z nią problemów, aż do teraz. Już drugi dzień się tłukę z tym kodem.

A tak swoją drogą to Helion powinien się wstydzić...

0

Loool. Jakbym taki kod zobaczył w jakiejkolwiek książce, autor dostałby niezły łomot...

0
Patryk27 napisał(a):

Loool. Jakbym taki kod zobaczył w jakiejkolwiek książce, autor dostałby niezły łomot...

Dziękiuję Ci, że mnie rozumiesz. Tylko, że w tym momencie nie bardzo wiem jak mam się tego php uczyć. Bo prawda jest taka, że w tej książce taki koszmarnych błędów może być dużo więcej, a książka ma 800 stron. Tsa...

1

Ja zawsze uczyłem się języków czytając gotowe kody (początkowo proste, lecz z czasem coraz trudniejsze), a przy tym zaglądając do dokumentacji oraz tutorialów/poradników online (na zasadzie: a to co jest ten cały array? A to wpiszę php array i poczytam co o tym piszą; ma to swoje zalety (łatwiej się zapamiętuje), jak i również wady (czasami można nauczyć się jakiegoś błędnego nawyku, którego później może być ciężko się pozbyć)).
Zawsze możesz również kupić inną książkę - niekoniecznie polską, angielskich jest o wiele więcej, a przy tym niektóre są lepsze (tutaj nic konkretnego niestety nie polecę, lecz może jakiś inny forumowicz ;)).

0
Patryk27 napisał(a):

Ja zawsze uczyłem się języków czytając gotowe kody (początkowo proste, lecz z czasem coraz trudniejsze), a przy tym zaglądając do dokumentacji oraz tutorialów/poradników online (na zasadzie: a to co jest ten cały array? A to wpiszę php array i poczytam co o tym piszą; ma to swoje zalety (łatwiej się zapamiętuje), jak i również wady (czasami można nauczyć się jakiegoś błędnego nawyku, którego później może być ciężko się pozbyć)).
Zawsze możesz również kupić inną książkę - niekoniecznie polską, angielskich jest o wiele więcej, a przy tym niektóre są lepsze (tutaj nic konkretnego niestety nie polecę, lecz może jakiś inny forumowicz ;)).

Wiesz, prawda jest taka, że zaglądam oczywiście do php.net i wiele tam wyczytałem, a co to jest php array oczywiście wiem. Wpieniają mnie natomiast sytuacje, gdy pojawia się w księgarni książką, w której jest od groma gotowych wielkich kodów z błędami. Przeż odbłędzanie takiego kodu, to jest jakiś koszmar. Dzisiaj już jestem zbyt zniechęcony, ale jutro spróbuję sobie fragment tego kodu sam napisać. Ciekawe, może wyjdzie mi z tego co lepszego.

Sam pewnie przyznasz, że analizowanie kodu z błedami mija się z celem.

0
finito napisał(a)

Sam pewnie przyznasz, że analizowanie kodu z błedami mija się z celem.

Podczas nauki analizowanie kodu z błędami rzeczywiście mija się z celem, potem własnoręcznie napisany niepoprawnie działający kod już codzienność ;)

0
Patryk27 napisał(a):
finito napisał(a)

Sam pewnie przyznasz, że analizowanie kodu z błedami mija się z celem.

Podczas nauki analizowanie kodu z błędami rzeczywiście mija się z celem, potem własnoręcznie napisany niepoprawnie działający kod już codzienność ;)

Mnie tylko martwi, że nie wiem w tym momencie skąd czerpać podstawową wiedzę. Jeśli chodzi o php, to się już naciąłem na "php dla każdego" oraz ta, która czytam teraz. Tak w ogóle to chyba tę książkę potraktuję tak bardziej teoretycznie. Z resztą i tak natknąłem się na przeterminowaną funkcję ereg i w sumie dobrze,bo dzięki temu odkryłem preg_replace, preg_match i tym podobne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1