Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][HTML]Nauka PHP, Studiowanie kodu krok po kroku
art_php
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.07.2008
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


Hej,
Przepisałem o to taki kod z jednej książek poświęconej programowaniu w PHP w ramach nauki PHP, jednak nie rozumiem pewnych bloków kodu:
CODE
<?php
class Strona
{
//atrybuty klasy Strona
public $zawartosc;
public $tytul='TLA Consulting';
public $przyciski=array('Strona glowna'=>'glowna.php',
'Kontakt' =>'kontakt.php',
'Uslugi' =>'uslugi.php',
'Mapa Strony' =>'mapa.php'
);
//operacja klasy Strona
public function __set($nazwa,$wartosc)
{
$this->$nazwa=$wartosc;
}
public function Wyswietl()
{
echo "<html>\n<head>\n";
$this->WyswietlSlowaKluczowe();
$this->WyswietlStyle();
echo"</head>\n<body>\n";
$this->WyswietlNaglowek();
$this->WyswietlMenu($this->przyciski);
echo $this->zawartosc;
$this->WyswietlStopke();
echo "</body>\n</html>\n";
}

public function WyswietlTytul()
{
echo "<title>$this->tytul</title>";
}

public function WyswietlSlowaKluczowe()
{
echo "<meta name=\"keywords\" content=\"".htmlentities($this->slowa_kluczowe),"\" />";
}
public function WyswietlNaglowek()
{
?>
<table width="100%" cellpading="12" cellspacing="0" border="0">
<tr bgcolor="black">
<td align="left"><img src="logo.gif" /></td>
<td>
<h1>TLA Consulting</h1>
</td>
<td align="right"><img src="logo.gif" /></td>
</tr>
</table>
<?
}
public function WyswietlMenu($przyciski)
{
echo "<table width='100%' bgcolor='white' cellpadding='4' cellspacing='4'\n";
echo "<tr>\n";
//obliczenie wielkosci przycisku
$szerokosc=100/count($przyciski);

foreach ($przyciski as $nazwa=>$url)
{
$this->WyswietlPrzycisk ($szerokosc, $nazwa, $url, !$this->CzyToAktualnyURL
($url));
}
echo "</tr>\n";
echo "</table>\n";
}
public function CzyToAktualnyURL($url)
{
if(strpos($_SERVER['PHP_SELF'], $url)==false)
{
return false;
}
else
{
return true;
}
}
public function WyswietlPrzycisk($szerokosc, $nazwa, $url, $active=true)
{
if($active)
{
echo "<td width='".htmlentities($szerokosc)."%'>
<a href='".htmlentities($url)."' />
<img src='m-logo.gif' alt='".htmlentities($nazwa)."' border='1'>
<a href='".htmlentities($url)."'><span
class='menu'>$nazwa</span></a></td>";
}
else
{
echo "<td width='".htmlentities($szerokosc)."%'>
<img src='boczne-logo.gif'>
<span class='menu'>$nazwa</span></td>";
}
}
?>



1. Nie rozumiem czemu służy to $szerokosc=100/count($przyciski); ?

2a. Dlaczego tutaj jeden wskaźnik this jest zawarty w drugim, jakie to ma znaczenie? $this->WyswietlPrzycisk ($szerokosc, $nazwa, $url, !$this->CzyToAktualnyURL ($url)); ?


2b. Jeszcze nie rozumiem tej funkcji foreach. Tutaj jest zmianna $przyciski zapisana jako zmienna $nazwa i … ? (=>$url) ?

3. Co ten blok kodu tutaj sprawdza if(strpos($_SERVER['PHP_SELF'], $url)==false) ?


Trochę kodu uciąłem, bo się nie mieścił, ale chyba wycięty kod nie ma znaczenia dla pytań.

Ten post edytował art_php 2.03.2009, 20:05:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Foxx
post
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


0. Gdybyś użył znaczników php to by się lepiej czytało Twój kod.
1. Ta instrukcja
  1. <?php
  2. $szerokosc=100/count($przyciski);
  3. ?>

przypisuje zmiennej $szerokosc wartosc 100 podzielone przez liczbę elementów w tablicy $przyciski. Korzystaj z manuala jeżeli widzisz funkcję, ktorej nie znasz:
count()" title="Zobacz w manualu PHP" target="_manual.
Widocznie trzeba 100 jednostek rozdzielić porówno między wszystkie przyciski do wyświetlenia.

2a. Ta konstrukcja:
  1. <?php
  2. $this->WyswietlPrzycisk ($szerokosc, $nazwa, $url, !$this->CzyToAktualnyURL ($url));
  3. ?>

To wywołanie metody WyswietlPrzycisk. Przyjmuje ona 4 parametry: szerokość, nazwę, url i ostatni, prawodpodobnie w postaci true/false. I ten ostatni parametr pochodzi stąd, że zwraca go metoda CzyToAktualnyURL, która przyjmuje 1 argument - url (i prawdopodobnie porównuje go z aktualnym i zwraca true lub false).

2b. Jest to trochę bardziej rozbudowana forma instrukcji foreach. Wykonaj sobie taki kod i wyciagnij wnioski:
  1. <?php
  2. $tablica = array('zwierze1' => 'kot', 'zwierze2' => 'pies');
  3. foreach ($tablica as $klucz=>$wartosc)
  4. {
  5.  echo 'jestem kluczem: '.$klucz.' a ja jego wartoscia: '.$wartosc;
  6. }
  7. ?>


3b.
  1. <?php
  2. if(strpos($_SERVER['PHP_SELF'], $url)==false) ?
  3. ?>

Manual: strpos()" title="Zobacz w manualu PHP" target="_manual
Wykonaj u siebie kod
  1. <?php
  2. print_r($_SERVER);
  3. ?>

i zobacz co jest pod kluczem PHP_SELF.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 13:13