Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Błąd z funkcją...
NorQ
post 4.07.2012, 13:53:49
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


Witam, jestem początkujący w php. i natknełem się na błąd Call to undefined function w swoim skrypcie, proszę o wskazanie błędu i doradzenie:

templates.class.php
  1. <?php
  2.  
  3. class Template {
  4. var $templates_dir = 'templates/';
  5. var $templates_tags = '';
  6. var $templates_file = '';
  7.  
  8. function Template() { }
  9.  
  10. function assign($tags,$value='') {
  11. if (is_array($value)) {
  12. foreach($tags as $tag => $tagvalue) {
  13. if (!empty($tag)) {
  14. $this -> templates_tags['{$'.$tag.'}'] = $tagvalue;
  15. }
  16. }
  17. } else {
  18. $this -> templates_tags['{$'.$tags.'}'] = $value;
  19. }
  20. }
  21.  
  22. function display($file) {
  23. $this -> templates_file = file_get_contents($this -> templates_dir.$file);
  24. $tmp_ = str_replace(array_keys($this -> templates_tags), array_values($this -> templates_tags), $this -> templates_file);
  25. echo $tmp_;
  26. }
  27.  
  28. function modules() {
  29. echo 'Hello world!';
  30. }
  31.  
  32. }
  33. ?>


index.php

  1. <?php
  2. include('templates.class.php');
  3. $szablon = new Template();
  4. $modules = modules();
  5. $szablon -> assign('modules', $modules);
  6. $szablon -> assign('template_url', 'templates'); // nazwa katalogu z szablonem
  7. $szablon -> assign('title', 'Radio'); // Nazwa strony
  8. $szablon -> display('index.tpl'); // Nazwa szablonu
  9. ?>


Podejżewam że moja prośba o pomoc może być trochę śmieszna, gdyż dla was jest to prosta rzecz - ale niestety, mimo że jestem na forum rok nie mam czasu przesiadywać przy komputerze 24/h. oraz poznawać PHP...

Ten post edytował NorQ 4.07.2012, 13:54:39


--------------------
HTML, CSS, JS, PHP i inne nie idą w las...
Powoli się uczę co i jak ;]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Tajgeer
post 4.07.2012, 13:57:48
Post #2





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


Funkcja modules() znajduje się w klasie Template. Musisz zmienić jej inicjalizację w index.php.

Ten post edytował Tajgeer 4.07.2012, 13:58:11
Go to the top of the page
+Quote Post
NorQ
post 4.07.2012, 13:59:02
Post #3





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


Mógłbym prosić o wyjaśniecie bądź przykład?


--------------------
HTML, CSS, JS, PHP i inne nie idą w las...
Powoli się uczę co i jak ;]
Go to the top of the page
+Quote Post
Tajgeer
post 4.07.2012, 14:00:52
Post #4





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


Jeśli funkcja modules() jest częścią klasy Template, to musi być wywołana tak jak inne funkcje z klasy (np. assign()).

  1. $modules = $szablon -> modules();


Ten post edytował Tajgeer 4.07.2012, 14:04:30
Go to the top of the page
+Quote Post
NorQ
post 4.07.2012, 14:03:14
Post #5





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


Działa ok, tylko się wyświetla na samej górze strony... A ja chcę żeby w wyznaczonym miejscu - gdyż to system szablonów. {$modules}

Ten post edytował NorQ 4.07.2012, 14:05:12


--------------------
HTML, CSS, JS, PHP i inne nie idą w las...
Powoli się uczę co i jak ;]
Go to the top of the page
+Quote Post
Tajgeer
post 4.07.2012, 14:05:15
Post #6





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


Poczytaj o tym, jak w dobry sposób budować klasy w PHP5 (KLIK). Konstruktor wygląda inaczej niż w PHP4. Dodatkowo poczytaj o modyfikatorach dostępu (public, private, protected).

Włącz sobie raportowanie błędów (pełne):
  1. ini_set('display_errors', 1);


Jeśli funkcja ma zwracać wartość, to użyj return, a nie echo.

Ten post edytował Tajgeer 4.07.2012, 14:08:03
Go to the top of the page
+Quote Post
NorQ
post 4.07.2012, 14:16:31
Post #7





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


działa. dziex

Jeszcze jedno pytanie, jak return'a przystosować do poniższego kodu ?

  1. <?
  2. $body = $_GET["go"];
  3.  
  4.  
  5.  
  6. if ($body=="")
  7. {
  8. include("includes/news.php");
  9. }
  10.  
  11. else {
  12.  
  13. if (is_file("includes/$body.php"))
  14. {
  15. include("includes/$body.php");
  16. }
  17.  
  18. else
  19. {
  20. include("includes/error.php");
  21. }
  22. }
  23.  
  24.  
  25. ?>


--------------------
HTML, CSS, JS, PHP i inne nie idą w las...
Powoli się uczę co i jak ;]
Go to the top of the page
+Quote Post
Tajgeer
post 4.07.2012, 14:24:45
Post #8





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


Podobnie jak rozwiązane jest przypisywanie szablonu do zmiennej $this->templates_file w metodzie display() smile.gif

Zapoznaj się z innymi systemami szablonów (np. Smarty) i zobacz, jak tam jest to rozwiązane.

Ten post edytował Tajgeer 4.07.2012, 14:25:42
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: 19.07.2025 - 06:16