Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Obiekty i Klasy
tomi1985
post 23.03.2013, 14:45:56
Post #1





Grupa: Zarejestrowani
Postów: 192
Pomógł: 12
Dołączył: 23.09.2010
Skąd: Warszawa

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


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

Ten post edytował tomi1985 23.03.2013, 14:47:30
Go to the top of the page
+Quote Post
Wazniak96
post 23.03.2013, 15:02:57
Post #2





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


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.

Ten post edytował Wazniak96 23.03.2013, 15:03:52
Go to the top of the page
+Quote Post
tomi1985
post 23.03.2013, 15:04:05
Post #3





Grupa: Zarejestrowani
Postów: 192
Pomógł: 12
Dołączył: 23.09.2010
Skąd: Warszawa

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


to jest cały kod pliku ggg.php
Go to the top of the page
+Quote Post
Wazniak96
post 23.03.2013, 15:07:02
Post #4





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


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
Go to the top of the page
+Quote Post
tomi1985
post 23.03.2013, 15:25:19
Post #5





Grupa: Zarejestrowani
Postów: 192
Pomógł: 12
Dołączył: 23.09.2010
Skąd: Warszawa

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


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
Go to the top of the page
+Quote Post
Greg0
post 23.03.2013, 15:46:11
Post #6





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


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

Ten post edytował Greg0 23.03.2013, 15:47:20
Go to the top of the page
+Quote Post
tomi1985
post 23.03.2013, 15:52:17
Post #7





Grupa: Zarejestrowani
Postów: 192
Pomógł: 12
Dołączył: 23.09.2010
Skąd: Warszawa

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


ok, dzieki.

Dopiero się ucze obiektowo pisać takze kazda rada jak i polecona książka bedzie na wage zlota
Go to the top of the page
+Quote Post
Wazniak96
post 23.03.2013, 17:36:15
Post #8





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


Ja polecam ten kurs OOP w PHP Dość ciekawie i szczegółowo wytłumaczone. Lecz zawsze najlepszym nauczycielem będzie praktyka. wink.gif
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 06:23