Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mysqli, uzywanie w innej klasie
Forum PHP.pl > Forum > PHP
padawan2000
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ę?
nospor
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
padawan2000
nie chcę zrobić na 'odwal', jednak trochę się spiesze, bo projekt fajnie śmigał bez mysqli 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?
nospor
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
padawan2000
ok, dzięki, działa businesssmiley.png
czy przy okazji powiesz, dlaczego to rozwiązanie uważasz za "na odwal" ?
nospor
Poniewaz GLOBALi nie uzywa sie juz od jakis 100 lat... ot czemu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.