Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Obiekty i Klasy
Forum PHP.pl > Forum > Przedszkole
tomi1985
Witam Serdecznie,

dopiero zaczynam z programowaniem obiektowym także nie śmiejcie się z mojego zapytania biggrin.gif

Otóż mam taki kodzik,

Kod
class Naglowek {// Nagłówek strony

    public $url = "jakas domena"; // Url wszystkim linkom
        
    public $menu_poziom = array ("Dodaj Obiekt" => "regi,0.html",
                                  "Regulamin" => "regulamin/",
                                  "Cennik" => "cennik/",
                                  "Kontakt" => "kontakt/",
                                  "Panel Administracyjny" => "panel/"
                                );
                                
    public function Show_menu_poziom($menu_poziom){
        foreach($menu_poziom as $menu => $adres){
            echo "<a href='$this->url.$this->adres'>$this->menu</a>";
        }
    }
    
}
$cos= new Naglowek();
$cos->Show_menu_poziom($menu_poziom);


i taki błąd wyskakuje.

Nie mam pojęcia co z tym zrobić ...

Warning: Invalid argument supplied for foreach() in /homepages/14/d348102929/htdocs/domena.pl/test/ggg.php on line 15

Proszę o pomoc
Wazniak96
Błąd pokazuje się podczas utworzenia klasy czy podczas próby użycia metody Show_menu_poziom? Jeśli podczas użycia metody pokaż jak ją używasz smile.gif

PS: Używaj odpowiedniego listingu kodu.
tomi1985
to jest cały kod pliku ggg.php
Wazniak96
Przepraszam, nie zauważyłem. Podajesz zły argument do metody. Wystarczy zrobić o tak:
  1. class Naglowek {// Nagłówek strony
  2.  
  3. public $url = "jakas domena"; // Url wszystkim linkom
  4.  
  5. public $menu_poziom = array ("Dodaj Obiekt" => "regi,0.html",
  6. "Regulamin" => "regulamin/",
  7. "Cennik" => "cennik/",
  8. "Kontakt" => "kontakt/",
  9. "Panel Administracyjny" => "panel/"
  10. );
  11.  
  12. public function Show_menu_poziom(){
  13. foreach($this->menu_poziom as $menu => $adres){
  14. echo "<a href='$this->url.$this->adres'>$this->menu</a>";
  15. }
  16. }
  17.  
  18. }
  19. $cos= new Naglowek();
  20. $cos->Show_menu_poziom();

Dlaczego ? Jako obiekt dajesz tablicę, a później jako argument podajesz zwykłą zmienną zamiast obiektu. Ja całkowicie usunełem argumenty z tej funkcji i od razu w niej dałem odniesienie się do obiektu. smile.gif
tomi1985
ok, dzieki ... działa prawie biggrin.gif ale teraz nie wyswietla mi kluczy z tablicy ;/

już działa...

cho "<a href='$this->url$adres'>$menu</a>"; ---> bylo z $this lecz przeciez nie ma tu odwolania do obiektów takze dlatego nie zadzialalo smile.gif

pozdro i dzieki za pomoc


ps.

Poleci ktos jakas dobra ksiazke o obiektach i klasach w php
Greg0
Jeszcze taka rada ode mnie. Jeśli echujesz zmienne w stringu lepiej zrobić to w ten sposób
  1. echo '<a href="'.$this->url.$this->adres.'">'.$this->menu.'</a>";


Dodatkowo skoro nie używasz tablicy menu_poziom na zwnątrz obiektu warto ustawić private dla tego pola, podobnie z url
tomi1985
ok, dzieki.

Dopiero się ucze obiektowo pisać takze kazda rada jak i polecona książka bedzie na wage zlota
Wazniak96
Ja polecam ten kurs OOP w PHP Dość ciekawie i szczegółowo wytłumaczone. Lecz zawsze najlepszym nauczycielem będzie praktyka. wink.gif
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.