Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Skrypt PHP] Początek prostego CMSa, Czyli "programowanie" dla wprawy
rekamil97
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.11.2014

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


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/

Ten post edytował rekamil97 1.05.2015, 22:55:59
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #2





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


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?


--------------------
Go to the top of the page
+Quote Post
rekamil97
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.11.2014

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


Dodałem na "sourceforge". Plik function.php można zobaczyć tu:
http://pastebin.com/uDBTJdhy
Go to the top of the page
+Quote Post
IProSoft
post
Post #4





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


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.


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
ohm
post
Post #5





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

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


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)

Ten post edytował ohm 1.05.2015, 12:52:03
Go to the top of the page
+Quote Post
rekamil97
post
Post #6





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.11.2014

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


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ą
Go to the top of the page
+Quote Post
IProSoft
post
Post #7





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


W 65 przypisujesz pod $id 0 więc oczywiste, jest że nie ma takiego news.

Tak, chodzi o return.


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
rekamil97
post
Post #8





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.11.2014

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


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));




Ten post edytował rekamil97 1.05.2015, 14:06:15
Go to the top of the page
+Quote Post
IProSoft
post
Post #9





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Inaczej: skoro wiesz, że Id będzie równe zero, to może warto odrazu wyświetliś stronę główną bez dodatkowego zapytania ?


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
rekamil97
post
Post #10





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.11.2014

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


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());
Go to the top of the page
+Quote Post
IProSoft
post
Post #11





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Nie używaj nawiasów wraz z echo, są zbedne.

Return każdej z funkcji.



--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
rekamil97
post
Post #12





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.11.2014

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


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.
Go to the top of the page
+Quote Post
salfunglandyare
post
Post #13





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

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


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?
Go to the top of the page
+Quote Post
rekamil97
post
Post #14





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.11.2014

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


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ć
Go to the top of the page
+Quote Post
IProSoft
post
Post #15





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


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.


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #16





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. $id = (int)$_GET['id'];
  2. if($id <= 0)
  3. // return to Main page
Go to the top of the page
+Quote Post
Xelah
post
Post #17





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 12.05.2013
Skąd: Hamburg

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


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?

Ten post edytował Xelah 18.05.2015, 08:19:14
Go to the top of the page
+Quote Post

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 Aktualny czas: 20.08.2025 - 21:41