Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Skrypt PHP] Początek prostego CMSa
Forum PHP.pl > Inne > Oceny
rekamil97
Postanowiłem stworzyć w ramach ćwiczenia i nauki prostego CMSa. Na razie większość funkcji jest w budowie jednak mam już stworzonych parę funkcji (function.php). Chciałbym abyście ocenili jaka jest "amatorskość" tego kodu i jakie rozwiązania zmienić pisząc kolejne funkcje. Co poprawić, co zmienić żeby nie była to typowa "amatorszczyzna początkującego".

Załączam skrypt. Proponuje skupić się na pliku function.php bo jest to "serce" tego skryptu.

https://sourceforge.net/projects/ncmsrekami.../?source=navbar

Adres przykładowej strony:
http://rekamil.zz.mu/
PrinceOfPersia
Cytat
Załączam link do pobrania tych kliku plików w zipie.

tak się nie robi, komu będzie się chciało ściągać w zipie. Nie lepiej wrzucać na jakimś GitHubie czy czymś podobnym?
rekamil97
Dodałem na "sourceforge". Plik function.php można zobaczyć tu:
http://pastebin.com/uDBTJdhy
IProSoft
Na pierwszy rzut:
- połaczenie z DB przekazuje jako parametr w __construct itp
- nie wyświetlaj tylko zwracaj dane
- skoro $id = 0; to po co jeszcze zapytanie do bazy ?

Zacznij od jakiejśc dobrej książki albo tutoriali, dopiero pisz kod, zaczniesz od dobrych nawyków.
ohm
Jeśli już zaczynasz coś obiektowo pisać, to pisz to chociaż wg jakichś standardów: http://www.php-fig.org/psr/psr-1/ http://www.php-fig.org/psr/psr-2/ (szczególnie 4.1 i 4.2)
global - tego już się nie używa
Zamiast $id = 0 wyrzuć wyjątkiem czy 404 po prostu.
Zainteresuj się jakimś systemem szablonów (twig np) bo będziesz miał sieczkę a nie CMS wink.gif

A i jeszcze jedna sprawa, albo utrzymujesz kod po angielsku, albo po polsku (chociaż wg mnie dużo lepiej po angielsku tongue.gif)
rekamil97
Cytat(IProSoft @ 1.05.2015, 13:10:17 ) *
- nie wyświetlaj tylko zwracaj dane
- skoro $id = 0; to po co jeszcze zapytanie do bazy ?


Czyli zamiast echo - return?
Jeśli chodzi o to $id = 0 w lini 68 to jest sprawdzanie czy w bazie jest rekord. Jeśli zapytanie zwróci id i RowCount go policzy - oznacza że jest jakiś news z tym id. Jesli nie ma wyświet stronę główną
IProSoft
W 65 przypisujesz pod $id 0 więc oczywiste, jest że nie ma takiego news.

Tak, chodzi o return.
rekamil97
Przypisuje po to pod $id 0 aby potem RowCount dostał pusty wynik - jak dostanie pusty wynik wyświetla strone główną. Gdybym nie utworzył zmiennej $id to linia 69 by wywaliła że nie ma takiej zmiennej $id:

  1. $name->execute(array('id'=>$id));


IProSoft
Inaczej: skoro wiesz, że Id będzie równe zero, to może warto odrazu wyświetliś stronę główną bez dodatkowego zapytania ?
rekamil97
A jeszcze pytanie o return - gdzie zamiast echo. Tekst musi być wyświetlony - więc chodzi o to żeby funkcje zwracały returnem a funkcje wyświetlać echem w index.php czyli:

  1. function x() {
  2. return 1;
  3. }
  4.  
  5. echo(x());
IProSoft
Nie używaj nawiasów wraz z echo, są zbedne.

Return każdej z funkcji.

rekamil97
Cytat(IProSoft @ 1.05.2015, 15:04:22 ) *
Inaczej: skoro wiesz, że Id będzie równe zero, to może warto odrazu wyświetliś stronę główną bez dodatkowego zapytania ?


Ale gdybym wyświetlił stronę główną zamiast przypisywać $id = 0 to i tak musiał bym mieć mieć drugi raz wyświetlanie strony głównej gdyby id nie istniało (np dla id -1 nie istnieje news więc RowCount zwraca 0 więc wyświetlam stronę główną) w bazie więc kod by się rozbudował i zdublował 2 razy tym samym.
salfunglandyare
questionmark.gif? wystarczy Ci jeden warunek w sql: id = $id, jeśli brak - redirect , jesli 0 redirect, jestli puste - redirect... wysterzy warunek empty() chyba ze czegos nie rozumiem?
rekamil97
Pomyśle nad takim rozwiązaniem tej funkcji. Jeszcze zamieszczam cały stary kod:

https://sourceforge.net/p/ncms2/code/ci/master/tree/

Żeby można było swobodnie go zobaczyć
IProSoft
Nie zamieszczaj starego kodu, tylko popraw to o czym piszemy i dopiero cokolwiek wrzucaj. Najlepiej gdybyś pokazywał/poprawiał pojedyńcze funkcje na początek, wtedy złapał byś gdzie popełniasz błedy.
Pyton_000
  1. $id = (int)$_GET['id'];
  2. if($id <= 0)
  3. // return to Main page
Xelah
Skoro się dopiero uczysz, to ja polecam zapoznać się z takimi cudami jak programowanie obiektowe, clean code i design patterns. Potem już możesz stukać kod. To, co do tej pory napisałeś nie powinno nigdy ujrzeć światła dziennego. Zacznij od podstaw, bo jak dzisiaj nabierzesz złych nawyków, to już tak ci zostanie... A to nie wróży niczego dobrego programiście. No chyba, że szczytem marzeń jest dla ciebie robienie prostych stronek/wizytówek. Ale raczej nie jest, prawda?
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-2024 Invision Power Services, Inc.