Chciałbym napisać pewną część swojego edukacyjnego projektu w ujęciu obiektowym. Korzystam z bazy danych MySQL, więc nie muszę pisać klasy obsługującej tę bazę osobno, tylko chcę skorzystać z wbudowanej klasy mysqli. Mam jednak problem już na starcie, bo nie wiem, jak ta klasa może być dziedziczona w innych. Przykładowo mam klasę:
Kod
class Przykladowa_klasa (
)
)
w której chciałbym wykonać pewne operacje na bazie danych. Jak w takiej sytuacji zainicjować dziedziczenie mysqli? Wpisać po prostu Przykładowa klasa extends mysqli? Czy jeśli taki zabieg jest możliwy, to w jaki sposób tworzy się egzemplarz klasy wewnątrz tej Przykładowa_klasa? Jeśli wywołuję mysqli w innym miejscu, wystarczy, że wpiszę:
Kod
$polaczenie = @new mysqli('host', 'uzytkownik', 'haslo', 'nazwa bazy');
czy można użyć tego podobnie wewnątrz innej klasy (chodzi o operator new). Jeśli tak to gdzie najlepiej to zrobić?
Jednocześnie chciałbym zadać jeszcze kilka innych pytać związanych z php obiektowym. Analizowałem sobie przez pewien czas kod obiektowy z różnych źródeł, gdzie jest on umieszczany bezpłatnie i nie rozumiem pewnych mechanizmów często stosowanych (przepraszam, jeśli pytania sa lamerskie, ale niestety w książkach które przerabiam jest ogólny zarys idei OOP, a w praktyce napotykam na niezrozumiałe fragmenty), np.
Kod
class klasa1
{
public $imie;
public $nazwisko;
function __construct($imie,$nazwisko)
{
$this->imie=$imie;
$this->nazwisko=$nazwisko;
}
function wyswietl()
{ echo " klasa 1"."\n";
echo "$this->imie"."\n"."$this->nazwisko"."\n";
}
}
{
public $imie;
public $nazwisko;
function __construct($imie,$nazwisko)
{
$this->imie=$imie;
$this->nazwisko=$nazwisko;
}
function wyswietl()
{ echo " klasa 1"."\n";
echo "$this->imie"."\n"."$this->nazwisko"."\n";
}
}
Nurtuje mnie to, co się dzieje w konstruktorze. Kumam kod do momentu, kiedy po odwołaniu się do pól $imie, $naziwsko wewnątrz klasy za pomocą $this, przypisuje sie je do zmiennej $imie jeszcze raz za pomocą operatora "=". Czy ktoś mógłby mi wytłumaczyć dlaczego stosuje się taki zabieg?
Ponadto chciałbym zapytać, czy zmienne w metodach danej klasy mogą przyjmować za swoje parametry tylko zmiennie wcześniej zadeklarowane jako metody klasy, czy także zmienne niezwiązane z klasą i pochodzące z innej części skryptu?