Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] ob_start i zapis do pliku przez dziedziczenie
-asdc-
post
Post #1





Goście







  1. class Bar
  2. {
  3. function error()
  4. {
  5. $o = new View()
  6. $o->parse('error,html');
  7. echo $o->render();
  8. }


  1. class Foo extends Bar
  2. {
  3. function index()
  4. {
  5. $o = new View()
  6. $o->parse('file,html');
  7. echo $o->render();
  8. }
  9.  
  10. }
  11.  
  12. }


Klasa View to nic innego jak metoda

  1. extract($tags, EXTR_SKIP);
  2.  
  3.  
  4. include $templatePath;
  5. $template_return = ob_get_contents();
  6. file_put_contents($fileName, $template_return);
  7.  


Ktoś mi wyjaśni dlaczego wszytko działa poprawnie, jednak gdy klasa Foo dziedziczy po Bar, to zapisywany jest również plik error pomimo że metoda error klasy Bar nie jest wykonywana?
Gdy nie używam dziedziczenia, wszytko działa poprawnie i są zapisywane tylko te pliki które sa w danych metodach.
Go to the top of the page
+Quote Post
-Gość-
post
Post #2





Goście







Nikt nie wie?
Go to the top of the page
+Quote Post
aras785
post
Post #3





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


Z tego co zrozumiałem to masz coś podobnego:

  1. <?php
  2. class view {
  3. public $tekst;
  4. function setText($text) {
  5. $this->tekst = $text;
  6. }
  7. function render() {
  8. return $this->tekst;
  9. }
  10. }
  11.  
  12. class bar {
  13. function error() {
  14. $o = new view();
  15. $o->setText('Tekst dla error');
  16. echo $o->render();
  17. }
  18. }
  19. class foo extends bar{
  20. function index() {
  21. $o = new view();
  22. $o->setText('Teskt dla index');
  23. echo $o->render();
  24. }
  25. }
  26.  
  27. $a = new foo();
  28. $a->index();
  29. ?>


i co źle chodzi? Daj wszystko co masz bo nikt chyba nie rozumie problemu
Go to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







Tak i jeśli w klasie View dam kod

  1. extract($tags, EXTR_SKIP);
  2. include $templatePath;
  3. $template_return = ob_get_contents();
  4. file_put_contents($fileName, $template_return);


To zapisywany jest tekst z foo index (metoda wywoływana) i z bar error (metoda która się nie wywołuje).
Na ekran wypluty jest tylko tekst prawidłowy, z funckji foo index, ale w "cache" siedzi też ten z bar error, plik jest zapisywany i chciałbym wiedzieć dlaczego tak się dzieje.
Z początku myślałem że popełniłem gdzieś błąd, ale napisałeś dokładnie to tak jak ja. Nie rozumiem dlaczego plik jest zapisywany, z klasy bar metody error, pomimo że nie jest nigdzie bezposrednie do niego odwołanie.

Sprawdzałem kod xdebugiem i działa prawidłowo, wszytko jest ok, poza tym że ten plik i tak jest zapisywany gdy używam ob_start i extends (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
!*!
post
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Nie przejmuj się tym, to "normalne". Swego czasu też mi to krwi napsuło, bo nie mogłem znaleźć przyczyny takiego "nadmiarowego" wywoływania metod i zrzucania cache do pliku. Takie akcje dzieją się tylko na localhost, możliwe że to jakiś bug związany z połączeniem przeglądarki na localu (zauważ że wysyłając zapytania np. przez dragonfly w operze czy chrome lub wget do bufora trafiają tylko te pliki które mają).

Na serwerach takie bugi nie występują.

Ten post edytował !*! 24.01.2013, 19:58:42
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.09.2025 - 13:19