![]() |
![]() |
-Gość- |
![]()
Post
#1
|
Goście ![]() |
Dlaczego konstrukcja taka:
Kod <?php include "klasa_a.php"; $a= new A(); $a= new A(); ?> klasa_a.php Kod <?php class A { function __construct() { include "klasa_b.php"; $b= new b(); } } ?> wywala błąd PHP Fatal error: Cannot redeclare class b a konstrukcje Kod <?php include "klasa_a.php"; $a= new A(); $a= new A(); ?> klasa_a.php Kod <?php class A { function __construct() { } } ?> i Kod <?php include "klasa_a.php"; $a= new A(); ?> klasa_a.php Kod <?php class A { function __construct() { include "klasa_b.php"; $b= new b(); } } ?> działa poprawnie ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Bo plik klasa_b zostaje dwa razy zaincludowany. Include może includować dany plik wiele razy, dlatego dostajesz błąd, że chcesz ponownie zadeklarować klasę B. Jeśli już musisz (dlaczego ?) includować w konstruktorze, to użyj include_once.
|
|
|
-Gość- |
![]()
Post
#3
|
Goście ![]() |
Ok działa. Chciałem zapytać bardziej o poprawnośc takiej konstrukcji załóżmy że klasa A to klasa ktora ma utworzyć całą strukturę strony, metoda wyswietl ma wyswietlic dane w postaci tabeli html .
Klasa B odpowiedzialna jest za łączenie się z bazą, jedna ze jej metod wyswietl zwraca wynik zapytania . Który ze sposobów jest poprawny a może żaden z nich i powinno się to robić w zupełnie inaczej ? Zaznaczam że nie jest to prawdziwy problem chodzi mi o samą zasadę. Przykład 1 Kod <?php include "klasa_a.php"; $a= new A(); $a->wyswietl("A"); $a=new A(); $a->wyswietl("B"); ?> Kod <?php class A { function wyswietl($par) { include_once "klasa_b.php"; $b= new b(); echo "Wyswietlony w postaci tabeli ". $b->wyswietl($par); } } ?> Kod <?php class B { function wyswietl($par) { if ($par=='A') return "Wynik zapytania A"; if ($par=='B') return "Wynik B"; } } ?> Przykład 2 Kod <?php include "klasa_a2.php"; include "klasa_b2.php"; $a= new A(); $b=new B(); $a->wyswietl($b->wyswietl('A')); $a= new A(); $b=new B(); $a->wyswietl($b->wyswietl('B')); ?> Kod <?php class A { function wyswietl($par) { echo "Wyswietlony w postaci tabeli ".$par; } } ?> Kod <?php
class B { function wyswietl($par) { if ($par=='A') return "Wynik zapytania A"; if ($par=='B') return "Wynik B"; } } ?> |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 23:29 |