Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Logowanie, zwrot/wypozyczenie ksiazek OOP - mocno początkujący
mrpickles
post 14.10.2019, 18:03:39
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 14.10.2019
Skąd: Białystok

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


Cześć,
Zaczynam naukę OOP i w napisałem skrypt który umożliwia rejestracje/logowanie/zwrot/wypożyczenie książek.
Mam świadomość istnienia SOLID oraz PSR - czytałem o PSR 1 / 2 i staram się przestrzegać.
Nie znam MVC ani testów np. PHPUnit - to będą kolejne kroki w nauce.

Czy taki skrypt można określić obiektowym, czy jest to jakaś hybryda? Zanim pójdę dalej jw chciałbym nauczyć się dobrych nawyków i w prawidłowy sposób posługiwać się OOP.

Skrypt nie wszedł na forum, umieściłem na githubie

Link do GitHub

Moje dodatkowe pytania:

1. Tworzenie obiektu Database w konstruktorze innych klas, czy jest to prawidłowe?
2. Metoda checkCredentials klasy log - czy nie narusza zasady pojedynczej odpowiedzialności? Czy nie powinna np. wyszukiwać użytkownika,a następnie inna metoda powinna weryfikować dane?

Dzięki za wszystkie uwagi i poświęcony czas smile.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mrpickles
post 15.10.2019, 20:06:49
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 14.10.2019
Skąd: Białystok

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


1. Dodałem autoloadera
2. Nie znam smarty ani innego template engine, więc HTML wrzuciłem w echo, jeśli to miałeś na myśli. Czy chodziło o rozdzielenie o tyle o ile to możliwe np. index i index_view, ale bez żadnego template engine?
3. Klasa Database w zamyśle miała być universalna do crud, nie wszystko jest z niej wykorzystywane w tym projekcie. Czy korzystając z PDO powinna ona tylko nawiązywać połączenie, a wszelkie operacje na bazie powinny być już napisane w innych klasach?
np. funkcje registerUser w klasie RegistrationForm wygląda następująco:
  1. public function registerUser($data){
  2. if($this->isError==false){
  3. $this->connection->query("INSERT INTO uzytkownicy VALUES(NULL,:nick,:email,:password)");
  4. $this->connection->bind(":nick",$data['nick']);
  5. $this->connection->bind(":email",$data['email']);
  6. $this->connection->bind(":password", password_hash($data['password'],PASSWORD_DEFAULT));
  7. $this->connection->execute();
  8. }

i rzeczywiście dostrzegam trochę niepotrzebność kodu - korzystając z metod Detabase jedyne co zaoszczędziłem w tym przypadku to przy bindowaniu nie daje parametru INT, STR etc, a w pozostałych linijkach mogłem korzystać bezpośrednio z PDO. Jednak była to klasa tworzona w ramach tutorialu OOP, z którego wywnioskowałem właśnie taki sposób działania.

3. Zmieniłem klase log na LoginForm
4. Dodałem namespace, przez co przy autoloaderze się musiałem namęczyć smile.gif
5. Zmieniłem insert na RegisterUser, jeśli miałeś na myśli mylącą nazwę funkcje - funkcja to zakłada konto, wsadzając rekordy do bazy.
5.
  1. foreach ($b as $a){

zmieniłem na inne zmienne, kiedyś ucyzłem się pythona i na potrzeby tymczasowej iteracji jak dobrze pamiętam dopuszczano właśnie takie oznaczanie zmiennych.
6. Dodałem komentarze do metod w RegistrationForm

Tak, będę ogarniał frameworka, postawiłem na Symfony, ale najpierw chciałem dla świętego spokoju uporządkować to co zrobiłem i chciałem zapoznać się z jakimś template engine, żeby było przejrzyściej, ale może to niewłaściwa kolejność.

Nowe pliki pod tym samym linkiem.

Dzięki za wypowiedzi.

Go to the top of the page
+Quote Post

Posty w temacie
- mrpickles   [PHP] Logowanie, zwrot/wypozyczenie ksiazek OOP - mocno początkujący   14.10.2019, 18:03:39
- - viking   Najpierw zastosuj autoloader, potem wyrzuć wszystk...   14.10.2019, 18:38:18
- - ohm   klasa Log jest dość mocno myląca, brak namespace...   14.10.2019, 20:13:08
- - mrpickles   1. Dodałem autoloadera 2. Nie znam smarty ani inne...   15.10.2019, 20:06:49
- - athabus   Niestety trochę błądzisz, ale moim zdaniem to bard...   15.10.2019, 21:03:22
- - mrpickles   Tak wiem, błądzę muszę poukładać wiedze. 1. zrobi...   17.10.2019, 21:00:47
- - viking   Przykładowo ta nieszczęsna klasa database. W przyp...   18.10.2019, 07:24:15
- - mrpickles   Usunąłem vendor/autoload w klasach - pozostałość b...   18.10.2019, 09:39:59
- - athabus   Ogólnie po zmianach wygląda już znacznie lepiej. P...   18.10.2019, 10:02:48
- - viking   https://martinfowler.com/eaaCatalog/ Dlaczego głów...   18.10.2019, 10:03:49
- - nospor   Njapierw klasa dziedziczy po Database class Regist...   18.10.2019, 10:21:30
- - athabus   Jeszcze taka ogólna uwaga odnośnie dziedziczenia. ...   18.10.2019, 10:36:44
- - mrpickles   Ustosunkuje się tylko niektórych elementów, bo dos...   18.10.2019, 11:49:49
|- - nospor   Cytat(mrpickles @ 18.10.2019, 11:49:4...   18.10.2019, 12:15:38
- - athabus   To o czym piszesz to jest częsty błąd w tutorialac...   18.10.2019, 12:14:40
- - mrpickles   Zakręciłem się i pracowałem na klonie, a zrobiłem ...   18.10.2019, 13:12:23
- - nospor   Generalnie nie chodzi o odzielenie php od html a o...   18.10.2019, 13:33:05
- - mrpickles   Ok czyli MVC się kłania. Dzięki za wyjaśnienia, ...   18.10.2019, 13:37:07
- - phpion   Wiele już zostało powiedziane ale ja dodam od sieb...   3.11.2019, 18:59:27
- - mrpickles   Trochę mnie nie było, jednak musiałem przyswoić do...   19.11.2019, 19:34:39
- - nospor   Jest zdecydowanie lepiej. echo View::renderTempl...   20.11.2019, 10:53:34
- - athabus   No prosze a już myślałem, że się poddałeś ;-) Ko...   21.11.2019, 08:36:44
- - mrpickles   Dzięki za uwagi:) 1) Powalczę z gitem - zamiast n...   21.11.2019, 16:45:44
- - athabus   Tak w telegraficzny skrócie, to to co zaproponował...   21.11.2019, 17:19:04
- - viking   Możesz też zmienić podejście i poczytać o https://...   21.11.2019, 18:53:53
- - mrpickles   Utknąłem, nie mam pomysłu, przeglądałem dokumentac...   5.12.2019, 22:28:48
- - athabus   Najprościej chyba możesz to zrobić przechwytując w...   6.12.2019, 21:45:45
- - mrpickles   Zrobiłem tak, że kontroler zwraca Response, a w Ru...   8.12.2019, 20:51:37
- - nospor   Widze nadal kodu nie testujesz FrontController.ph...   7.01.2020, 16:34:45
- - mrpickles   Przez ostatni czas przerabiałem Laravela, teraz wr...   29.02.2020, 14:31:25
- - nospor   Zrozum, rzeczy konfiguracyjne nie moga lezej w GIT...   29.02.2020, 17:49:42
- - mrpickles   Dzięki teraz wiem o co chodzi. Tak używam laravela...   1.03.2020, 00:11:46


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 Wersja Lo-Fi Aktualny czas: 31.05.2024 - 04:04