Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]instancja klasy w klasie
-Gość-
post
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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
michalg
post
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 to the top of the page
+Quote Post
-Gość-
post
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";

    }
}
?>
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 Aktualny czas: 21.08.2025 - 23:29