Archiwum kategorii: kurs php

5. Dziedziczenie w programowaniu obiektowym

Dzisiaj nasz kurs programowania pozwoli Ci zgłębić bardzo ciekawy i użyteczny temat, jakim jest dziedziczenie. W programowaniu obiektowym pozwala ono utworzyć część klasy na podstawie innej, wcześniej utworzonej klasy. W Poprzednich lekcjach, tworzyliśmy klasę Post, która posiadała zmienne: $autor, $tytuł oraz $tresc. Nie jest to lekcja dla całkowicie początkujących. Musisz już coś wiedzieć z poprzednich lekcji.

Pod naszym postem, przydałyby się komentarze. Co musimy zrobić aby ten o to pomysł przelać na kod? Uczyłeś się przez ostatnie kilka lekcji programowania obiektowego, więc wiesz już, że wszystko składa się z obiektów, które powstały na podstawie klas.

Dziedziczenie jest tym, co nam dzisiaj pomoże utworzyć klasę minimalnym wysiłkiem. Moglibyśmy stworzyć klasę komentarz. Zawierałaby ona zmienne $autor, $tresc, i można by też, dołożyć zmienną przechowującą datę, czyli $data. Zauważ, zmienne $autor i $tresc, znajdują się także w klasie Post.

Możemy więc stworzyć klasę Komentarz, na podstawie klasy Post. Wtedy zmienne, które istnieją na planie obiektu typu Post, czyli w klasie, zostaną „Przekopiowane” do klasy Komentarz.

Aby to wykonać, musimy użyć słowa extends zaraz po nazwie deklarowanej klasy. Mówimy więc językiem programowania „Klasę Komentarz, rozszerz o Post”. Wyglądałoby to tak:

class Komentarz extends Post{

}

W tym momencie klasa Komentarz, przejęła wszystkie właściwości klasy Post. Nie są one widoczne, jednak tworząc obiekt na jej podstawie, można ich użyć. Możemy jej przypisać autora, tytuł i post. Tytuł w komentarzu nie będzie nam potrzebny, więc użyjemy tylko zmiennych z autorem i treścią. Dodamy więc tylko zmienną, przechowującą datę, gettery, settery i klasa komentarza będzie gotowa.

class Komentarz extends Post{
  private $data;

  public function getData()
  {
    return $this->data;
  }

  public function setData($data)
  {
    $this->data = $data;
  }
  
}

Jak widzisz, zamiast tworzyć trzy potrzebne nam zmienne, utworzyliśmy tylko jedną. Mamy więc trzykrotnie krótszy kod. Na to właśnie pozwala nam dziedziczenie. Używamy zmiennych i funkcji innych klas, tworząc nowe.

Na początku może Ci się to wydawać tylko małym ułatwieniem. W większych projektach jest to jednak funkcjonalność, bez której nie wyobrażam sobie pracować. Klasy nie raz mają ogromną ilość funkcji i trudno by było to kopiować.

Na zadanie utwórz jakiś komentarz według tej klasy i dodaj go do naszego kodu z klasą Post i widokiem strony, tak aby to ładnie wyglądało. Będziesz musiał trochę pomyśleć. O to właśnie chodzi w programowaniu. Pochwal się rezultatem w komentarzu.

Przećwicz to sam. Wymyśl jakąś klasę, stwórz jej zmienne, wykonaj dziedziczenie i upewnij się, że to rozumiesz.

Kurs php – Jak wczytać dane z bazy danych

W dzisiejszej lekcji kursu php, będziemy wczytywać informacje z bazy danych. Jest to dość ważny aspekt działania każdego, szanującego się serwisu internetowego. Chcę abyś zrozumiał, jak to działa, a nie tylko bezmyślnie klepał kod 🙂

Dobrze abyś przed tą lekcją, zapoznał się z czterema pierwszymi lekcjami programowania obiektowegoBędziemy go używać, gdyż obecne aplikacje, pisze się obiektowo. Programowanie strukturalne niech zostanie tam gdzie jego miejsce, czyli na lekcjach w technikum.

Zacznij od utworzenia w phpmyadmin bazy danych o nazwie blog. Wejdź do bazy danych i do zakładki sql przekopiuj kod, który utworzy potrzebną nam dzisiaj tabelę z postami. Kliknij przycisk wykonaj. Właśnie według kod sql, została utworzona tabela „posts”!

CREATE TABLE IF NOT EXISTS `posts` (
`id` int(6) unsigned NOT NULL AUTO_INCREMENT,
`contents` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`title` varchar(150) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL,
`data` date NOT NULL,
`author` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

INSERT INTO `posts` (`id`, `contents`, `title`, `data`, `author`) VALUES
(1, 'Przykładowy tekst', 'Programowanie obiektowe jest łatwe', '2016-03-17', 'Admin');

Jeśli chcesz wiedzieć, co oznaczają te polecenia, większość opisałem tutaj : http://www.prosteprogramowanie.pl/mysql/mysql-podstawowe-komendy-zapytania-polecenia-itp/ Nie zniechęcaj się! Nie ucz się ich na pamięć! Pisanie ich przyjdzie Ci z czasem 🙂

Czas na kodowanie:

Zaczynamy od utworzenia połączenia, tak jak w poprzedniej lekcji. Tworzymy obiekt typu mysqli i podajemy mu dane bazy:

$connection = new mysqli('localhost','root','','blog');

Chcemy pobrać wszystkie dane z tabeli posts.  Tworzymy więc zmienną do której trafi rezultat zapytania oraz wywołujemy zapytanie, przy pomocy funkcji query(): Funkcje ta należy do każdego obiektu typu mysqli. To właśnie takim obiektem jest $connection, gdyż powstał według klasy mysqli. Wywołujemy więc ją z tego obiektu.

$result = $connection->query("SELECT * FROM POSTS");

Mówi ono bazie: „Wybierz wszystko z tabeli posts”. Gwiazdka znaczy wszystko :).

No dobrze, podglądnij teraz z ciekawości co jest w zmiennej $result za pomocą funkcji print_r();

print_r($result);

Jak widzisz, nie znalazłeś tam nic, czego byś oczekiwał. Aby otrzymać czyste dane z bazy, np. w formie tablicy, trzeba zrobić coś jeszcze. Dane takie możemy pobrać np. w formie tablicy asocjacyjnej. Jest to tablica, której indeksy są nazwami kolumn tabeli. Jest to raczej najbardziej intuicyjny sposób, aby potem się do nich odwoływać.

Użyjemy więc funkcji fetch_assoc(), którą posiada obiekt $result. Jest on obiektem który powstał według klasy mysqli_result, podczas tworzenia zapytania. Jak widać, nie musieliśmy używać słówka new, wszystko zrobiło się samo 🙂

print_r($result->fetch_assoc());

Możemy to zapisać gdzieś np.

$tablicaAsocjacyjna = $result->fetch_assoc();

Jak widać teraz mamy już konkretne dane, w formie tablicy. Na zadanie domowe, wiedząc już czym jest tablica, użyj kodu z dzisiejszej lekcji. Dodaj go do kodu z 4 lekcji programowania obiektowego. Wrzuć dane z tablicy asocjacyjnej do obiektu typu post, za pomocą setterów, tak aby wszystko ładnie się wyświetlało. Powodzenia! 🙂

Kod końcowy tej lekcji:

 $connection = new mysqli('localhost','root','','blog');
$result = $connection->query("SELECT * FROM POSTS");
$tablicaAsocjacyjna = $result->fetch_assoc();
print_r($tablicaAsocjacyjna);