[www]Proste forum - PHP bez frameworków. |
[www]Proste forum - PHP bez frameworków. |
11.07.2018, 16:01:01
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 15.06.2018 Ostrzeżenie: (0%) |
Cześć.
Prosiłbym Was o opinię kodu, do którego link podrzucam niżej. Jest to proste forum - nie ma tu raczej jakiś rozbudowanych rzeczy, bo jest to mój pierwszy projekt w PHP, ale nawet pisząc takie coś, poznałem wiele nowych zagadnień Chciałbym dowiedzieć się co należy poprawić w przyszłości. Jest to projekt bez frameworków do php. Struktura - brak podfolderów leży, ale nie chciało mi się już z tym mieszać Poza tym wydaje mi się, że trochę pomieszałem rozbicie funkcji na klasy - na przykład komentarze w klasie postów. Dlatego dobrze gdybyście podpowiedzieli mi, co warto zmienić na przyszłość https://github.com/selfmadeking/simple-forum-php oraz podgląd jak to działa (trzeba założyć konto, dowolny e-mail jakiś login i hasło (szyfrowanie password_hash hehe), aby mieć dostęp do forum - swoje posty, komentarze, sygnaturę można edytować): https://imlimitless.000webhostapp.com/index.php Dodatkowe pytanie - czy Waszym zdaniem to już czas, żeby próbować pisać coś z frameworkiem w php np. Symfony? Czy jeszcze coś napisać? Macie pomysł co? Pozdrawiam i krytykujcie jak się tylko da! |
|
|
11.07.2018, 16:50:55
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Powiem ta. Nie jest tragicznie. Jest słabo ale nie tragicznie.
Dodam od siebie kilka uwag ogólnych bo o kodzie to można godzinami gadać. No to lecimy: - PHP7 - to już powinna być podstawa. Ja wiem że bardzo dużo (90%) kursów jest na podstawie PHP5 no ale warto poszukać w necie na zasadzie "Co nowego w PHP7" - namespace - to już jest od bardzo dawna standard. Pozwala Ci logicznie uporządkować kod. - struktura plików i konwencje nazwenictwa. - Poczytaj sobie o PSR-0 i PSR-2 bo bardzo ułatwi Ci to pracę. Nie trzymaj wszytskich plików w 1 katalogu. Rozdzielaj je logicznie. - Nie mieszamy HTML z PHP. - Używaj spacji jako indentacji. Ja wiem że gówno-burza zaraz z tego wyjdzie ale jednak spacja to spacja - wszędzie wygląda tak samo. - Staraj się eliminować zagnieżdżenia oraz zbędne instrukcje IF np: Kod if($stmt->rowCount() > 0) { return true; } else { return false; } Na: Kod if($stmt->rowCount()) { return true; } return false; - Dobrze że używasz PDO - używaj Unsigned w kolumnach tam gdzie nie przewidujes wartości ujemnych. - W metodach staraj się stosować zasadę odwróconej logiki. Chodzi o to że zamiast sprawdzać czy warunek jest OK i umieszczać całą logikę w bloku warto sprawdzić najpierw czy NIE jest spełniony. Przykład: Zamiast Kod if(count($comments) > 0) { foreach($comments as $comment) { $content = $comment['comment_content']; $user = $comment['user_name']; $comment_id = $comment['comment_id']; $dateConverted = new DateTime($comment['comment_date']); $date = ' | <span class="comment-date">' . $dateConverted->format('d.m.Y H:i') . '</span>'; $html.= '<div class="comment">'; $html.= '<p>' . $content; $html.= $date . ' <a href="#">' . $user .'</a></p>'; if($_SESSION['user_session'] === $comment['user_id']) { $html.= '<a href="deleteComment.php?id=' . $comment_id . '" title="Delete comment"><i class="fas fa-trash-alt comment-i"></i></a>'; $html.= '<a href="editComment.php?id=' . $comment_id . '" title="Edit comment"><i class="fas fa-edit comment-i"></i></a>'; } $html.= '</div>'; } return $html; } else { return false; } Lepiej: Kod if(count($comments) === 0) { return false; } foreach($comments as $comment) { $content = $comment['comment_content']; $user = $comment['user_name']; $comment_id = $comment['comment_id']; $dateConverted = new DateTime($comment['comment_date']); $date = ' | <span class="comment-date">' . $dateConverted->format('d.m.Y H:i') . '</span>'; $html.= '<div class="comment">'; $html.= '<p>' . $content; $html.= $date . ' <a href="#">' . $user .'</a></p>'; if($_SESSION['user_session'] === $comment['user_id']) { $html.= '<a href="deleteComment.php?id=' . $comment_id . '" title="Delete comment"><i class="fas fa-trash-alt comment-i"></i></a>'; $html.= '<a href="editComment.php?id=' . $comment_id . '" title="Edit comment"><i class="fas fa-edit comment-i"></i></a>'; } $html.= '</div>'; } return $html; Prawda że czytelniej? To tak na razie. + to co @nospor napisał odnośnie redukowania warunków (tam gdzie sprawdzasz czy pusty itp.) |
|
|
11.07.2018, 23:01:04
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
- Staraj się eliminować zagnieżdżenia oraz zbędne instrukcje IF np: Kod if($stmt->rowCount() > 0) { return true; } else { return false; } Na: Kod if($stmt->rowCount()) { return true; } return false;
albo:
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 24.06.2024 - 16:51 |