Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Object-oriented programming _ [PHP]Budowa index.php profesjonalnie

Napisany przez: sadistic_son 15.12.2022, 14:03:41

Cześć. Od około 2006 r. bawię się PHP amatorsko, nieobiektowo. Robiłem proste strony dla siebie czy znajomych, realizujące różne, czasem absurdalne zadania. Mniej lub bardziej przejmowałem się dobrymi praktykami a swoją wiedzę jak powinno się tworzyć stronę bazowałem na jednej właściwie książce z której w 2006 roku nauczyłem się programować w php. Nigdy nie programowałem profesjonalnie, ale teraz chcę to zmienić i szykuje się do rozmowy kwalifikacyjnej na juniora. Dostałem zadanie do zrobienia.
I teraz moje pytania do Was to właściwie jakie sa trendy, dobre praktyki w tworzeniu prostej stronki (mały sklep internetowy)? Cała logika strony ma być obiektowa.

1. Czy każda klasa powinna być w oddzielnym pliku? Gdzieś wyczytałem, że tak się robi - plik nazywa się tak jak klasę, pamiętając o wielkiej literze.
2. Jaką strukturę powinien mieć index.php i co w sobie zawierać?
a) Czy w index.php mają być jedynie odpalane jedna po drugiej metody zdefiniowane wcześniej w klasach w oddzielnych plikach?
cool.gif Czy w index.php wolno w ogóle umieszczać kod html?
3. Jak obsługuje się obecnie linki z main menu i wyświetla zawartość strony zależnie od wybranej podstrony? Dawniej zrobiłbym coś na zasadzie:

  1. switch($_GET['page']){
  2. case 'main-page':
  3. http://www.php.net/echo 'cała zawartość strony głównej';
  4. break;
  5. case 'gallery':
  6. http://www.php.net/echo 'wyświetlam galerię';
  7. break;
  8. default:
  9. http://www.php.net/echo 'landing page';
  10. }

Czy tak się robi? Zakładam, że już nie (a może nigdy tak się nie robiło, a ja robiłem to zawsze źle).


Pomóżcie - jak to powinno profesjonalnie wyglądać.
Dzięki.

Napisany przez: nospor 15.12.2022, 14:09:37

ad1) tak. Przeczytaj generalnie PSR jesli naprawde chcesz na powaznie sie za to brac

Reszta:
Poczytaj o MVC, routerach, popatrz jak to robia np. Symfony.
INdex w projekcie Symfony wyglada tak:

  1.  
  2. use App\Kernel;
  3.  
  4. require_once http://www.php.net/dirname(__DIR__).'/vendor/autoload_runtime.php';
  5.  
  6. return function (http://www.php.net/array $context) {
  7. return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
  8. };
  9.  


I nie, index nie powinien miec kodu HTML wink.gif

Napisany przez: sadistic_son 15.12.2022, 15:10:43

Ok, czytam PSR.

Już w PSR-1 mam pierwsze niejasności.

Co oznacza ten zapis (linijka 2)?

  1. <?php
  2. namespace Vendor\Model; //co to robi?
  3.  
  4. class Foo
  5. {
  6. }

Napisany przez: nospor 15.12.2022, 15:16:25

No to jeszcze musisz poczytac o NAMESPACE smile.gif Masz duze zaleglosci

Moze ten artykul
https://blog.wyremski.pl/przestrzenie-nazw-w-php-namespaces/
?

No i jeszcze AUTOLOAD, bo ta systematyka bardzo ulatwia wlasnie AUTOLOAD

Napisany przez: gino 15.12.2022, 15:21:46

A ja dodam , bo jak piszesz

Cytat
bawię się PHP amatorsko, nieobiektowo

że masz masę czytania i zrozumienia smile.gif

Napisany przez: nospor 15.12.2022, 15:23:48

Cytat(gino @ 15.12.2022, 14:21:46 ) *
A ja dodam , bo jak piszesz

że masz masę czytania i zrozumienia smile.gif

Ano. To moze faktycznie trzeba pokolei, bo jakies podstawy musza niestety byc.

Czyli:
NAMESPACE
AUTOLOADER
PSR

To tak na poczatek czy cos jeszcze koledzy?

Napisany przez: sadistic_son 15.12.2022, 16:16:10

Sądzicie, że czytać po kolei NAMESPACE, AUTOLOADER i PSR czy lepiej kupić jakąś książkę uczącą php obiektowo od podstaw, pominąć to co już wiem i lecieć rozdziały o OOP a potem tworzenie strony w praktyce?

Napisany przez: Tomplus 15.12.2022, 16:21:25

Ja ze swojej strony, stwierdzę że warto kupić sobie aktualną książkę do PHP i przeanalizować ją, bo doświadczonym programistą PHP nic nie powie bo wiedzą co trzeba, ale dla hobbystów i uczących się powiedzą sporo jak dobrze korzystać z PHP. Szczególnie że mamy teraz PHP 8.2 które niesie wiele zmian.

Napisany przez: Salvation 15.12.2022, 17:37:14

Książki niestety już (albo chwilowo) nie ma w sprzedaży, ale jest e-book. Może przypadnie ci do gustu: https://helion.pl/ksiazki/php-obiekty-wzorce-narzedzia-wydanie-v-matt-zandstra,phpob5.htm#format/e
Ja ze swojej strony - polecam bardzo.

Jak już przeczytasz powyższą, to następna jest taka: https://helion.pl/ksiazki/czysty-kod-podrecznik-dobrego-programisty-robert-c-martin,czykov.htm#format/e
Możesz też dorzucić sobie tą: https://helion.pl/ksiazki/kierunek-jakosc-jak-unikac-bledow-w-projekcie-aleksandra-kunysz,jaktob.htm#format/e
A później: https://helion.pl/ksiazki/mistrz-czystego-kodu-kodeks-postepowania-profesjonalnych-programistow-robert-c-martin,mckkvv.htm#format/e

Napisany przez: Tomplus 15.12.2022, 20:34:51

@Salvation
Ale obecnie z to nie tą książkę, tylko wersję z 8ką powinien okiełznać: https://helion.pl/ksiazki/php-8-i-sql-programowanie-dla-poczatkujacych-w-43-lekcjach-mariusz-duka,ph8sql.htm#format/d
Acz posiadam papierową ów wersję, polecam.

Polecam i potwierdzam istotność przeczytania kolejnych podanych pozycji, nawet jeżeli przykłady operowane są nie na PHP a na innych językach tj. C++ czy Java.

Napisany przez: Salvation 16.12.2022, 13:32:19

Różnice między 7 a 8, nie są aż takie duże, moim zdaniem. To jest do wyuczenia na projecie (nawet takim do szuflady) w miesiąc. A książka nr 1 co podlinkowałem badzo dobrze uświadamia pewne rzeczy.

A poza tym, to nigdy nie będzie aktualnej książki w temacie języka. Zawsze będzie przestarzała.
No, co innego właśnie takie (kultowe) pozycje jak Czysty Kod Martina, DDD Evansa czy Developer Hegemeny Dietricha.

Napisany przez: Tomplus 16.12.2022, 14:43:23

Zgadzam się, takie książki mogą się starzeń szybko, ale już lepiej mieć najnowsze wydanie niż starsze, szczególnie jeżeli dotyczy języka o konkretnych wersjach, bo niosą także przesłania i metody z książek innych autorów.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)