Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mysqli, uzywanie w innej klasie
padawan2000
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.11.2015

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


czesc, mam za zadanie napisac projekt w ktorym operuje na bazie za pomocą mysqli i w tym musze uzywac klas.
problem sie pojawia, gdy próbuje coś za pomocą metod z klas pobrać z bazy - w klasie nie jest widoczny mój obiekt mysqli.
  1. $polaczenie=new mysqli($host,$user,$password,$database);


gdzieś w kodzie:
Kod
class pracownicy
{
[...]
public function grupa_pracownika()
    {
        $szukane_id_grupy=$this->id_grupy;
        $zapytanie="SELECT nazwa FROM grupy WHERE id=".$szukane_id_grupy;
        $query2=$polaczenie->query($zapytanie);
        if($query2)$pobierz=$query2->fetch_array();
        if(!$query2){print'FATAL ERROR';exit();}
        return $pobierz[0];
    }
[...]
}

i tutaj już jest problem - brak obiektu $polaczenie
szukałem na internecie, znalazłem coś o rejestrach, singleton. mówiąc krótko - nie rozumiem i nie wiem jak je zastosować.
może mi ktoś pomóc, opisać to na przykładzie mojej klasy ?
a może jest jakieś prostsze rozwiązanie?
chcę jedynie uniknąć, aby w każdej jednej klasie od nowa definiować $host,$user,$password,$database
czy moze da się jakoś zrobić, aby te zmienne były widziane przez klasę?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Przeczytaj o prostym wzorcu DependyInjection - to jest rozwiazanie Twojego problemu.

A jak chcesz zrobic na odwal, to zajrzyj do manuala do dzialu 'Zasieg zmiennych' i poczytaj jak uzywac GLOBAL
Go to the top of the page
+Quote Post
padawan2000
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.11.2015

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


nie chcę zrobić na 'odwal', jednak trochę się spiesze, bo projekt fajnie śmigał bez mysqli (IMG:style_emoticons/default/oneeyedsmiley02.png)

a możecie mi powiedzieć, co jest złego w dawaniu do metody w klasie global $user,$pass,[...] ?

i czy da się to global i $polaczenie=new mysqli umiescic jakoś w ciele klasy zamiast w konkretnych metodach?

Ten post edytował padawan2000 13.11.2015, 18:14:26
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




W global masz przekaz $polaczenie a nie user i pass ....
$polaczenie masz robic TYLKO raz w aplikacji i nigdzie wiecej masz juz $polaczenie nie tworzyc
Go to the top of the page
+Quote Post
padawan2000
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.11.2015

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


ok, dzięki, działa (IMG:style_emoticons/default/businesssmiley.png)
czy przy okazji powiesz, dlaczego to rozwiązanie uważasz za "na odwal" ?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Poniewaz GLOBALi nie uzywa sie juz od jakis 100 lat... ot czemu.
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: 25.12.2025 - 00:12