Przejście w nauce PHP na nowy poziom

0

Czesc ucze sie jezyka php. Poziom jaki opanowalem to - poziom jaki reprezentuje strona codeacademy. Uczylem sie jeszcze na yt php + mysql, dostep do bazy, zapytania. Nie wiem w jaka strone uderzac, czy moze czas na jakas ksiazke czy w sieci jest wystarczajaco materialow, zebym mogl ogarnac cos glebszego. Znacie moze jakies materialy z "wiekszymi" podstawami niz prezentuje codeacademy? Wiecej obiektowego programowania, realne przyklady, zastosowania, wszystko co jest dalej, bo mam niedosyt jesli chodzi o nauke w codeacademy, choc b.polecam ta stronke.

0

Ucz się wzorców projektowych i przede wszystkim praktykuj.

Krzywy Terrorysta napisał(a):

Wiecej obiektowego programowania

to wiadomo :P

0

Jeśli używasz do połączeń z bazą mysql_ to od razu skłaniam Cię do zapoznania się z PDO/mysqli.
Z tego co pamiętam to na codecademy nie bardzo był ten temat obiektówki rozbudowany, więc możesz poczytać tutoriale z tym związane i dokumentację języka, a może nawet nauczyć się jakiegoś prostego frameworka. Zapoznaj się też z podstawowymi zagadnieniami bezpieczeństwa, np. haszowaniem haseł, SQL injection.

0

Jeśli używasz do połączeń z bazą mysql_ to od razu skłaniam Cię do zapoznania się z PDO/mysqli.

Tak, jesli chodzi o baze danych uzywam mysqli.

Z tego co pamiętam to na codecademy nie bardzo był ten temat obiektówki rozbudowany

Tez mam niedosyt po tym kursie. Wydaje sie to byc bardzo fajna sprawa to podejscie obiektowe, ale niestety niewidze jeszcze rozwiazan z takim podejsciem do jakiejs aplikacji internetowej. Chcialbym wlasnie zobaczyc jakies konkretne przyklady z zastosowaniem obiektowki i mozliwosci i do efektow jakie na codzien na stronach mozna wykorzystac. Bo zrobic klase, konstruktor i kilka metod typu greetings() nie jest to co chcialbym umiec na dzien dzisiejszy.

możesz poczytać tutoriale z tym związane i dokumentację języka, a może nawet nauczyć się jakiegoś prostego frameworka.

Jaki framework polecasz na poczatek? Znalezc zrodla do nauki nie jest trudno, lecz nie wiem ktore sa warte uwagi. Jesli jakies polecacie to po prostu napiszcie.

Zapoznaj się też z podstawowymi zagadnieniami bezpieczeństwa, np. haszowaniem haseł, SQL injection.

Z haszowaniem sie troche bawilem, ale dzieki, na pewno wezme to pod uwage i bede sie tego uczyl.

Moglbymi mi ktos jeszcze wytlumaczyc idee stosowania **const **oraz public static function?

0

Do nauki mogę polecić 2 książki:
http://helion.pl/ksiazki/php5-zaawansowane-programowanie-edward-lecky-thompson-heow-eide-goodman-steven-d,php5zp.htm
ta jest świetna - nauczyłem się z niej programowania. Jest trochę o samym PHP, o obiektach, trochę o wzorcach, trochę o prowadzeniu projektu.

http://helion.pl/ksiazki/php-obiekty-wzorce-narzedzia-wydanie-iv-matt-zandstra,phpob4.htm
Tą polecam raczej jako drugą (jak już doskonale opanujesz wszystko z tej poprzedniej). Tu już bardziej o samych wzorcach - napisane bardzo przystępnie i z czytelnymi przykładami.

Odnośnie const
Stałe (w klasach) stosuje się zazwyczaj, aby ustawić jakąś wartość konfiguracyjną lub żeby jakiejś konkretnej wartości nadać nazwę. Przykład: mamy w bazie danych tabelkę słownikową, która przechowuje np. nazwy pól formularza, czyli składa się ona z 2 kolumn: ID i name. Aby w kodzie uniknąć stosowania warunków typu

if ($fieldId == 1) { ... }

tworzy się klasę, która zawiera same stałe.

class FormFieldDictionary
{
    const USER_NAME = 1;
    const USER_SURNAME = 2;
    const USER_BIRTH_DATE = 3;
}

Wtedy ww. warunek będzie wyglądał tak:

if ($fieldId == FormFieldDictionary::USER_NAME) { ... } // zyskujemy czytelniejszy kod, bardziej elastyczny w przypadku refaktoryzacji

Co do public static function
Kiedyś tendencje były do wykorzystywania metod statycznych, jeśli sposób wykonania metody nie zależy od stanu obiektu i/lub go nie zmienia.
Obecnie raczej odchodzi się od stosowania statycznych metod - ich użycie często przypomina używanie globalnych funkcji - łatwo utworzyć w kodzie dodatkowe (niepotrzebne) powiązania.
Lepiej jest utworzyć klasę, której obiekt pełni funkcję usługi, która potrafi coś zrobić. Przykład:

// Piec dla pizzy - wykonuje dla pizzy usługę - piecze pizzę
class PizzaOven
{
    public function bake(Pizza $pizza) {
        echo 'Piekę pizzę: '.$pizza->getName();
    }
}

// Abstrakcyjna pizza
abstract class Pizza
{
    protected $name;

    public function getName()
    {
         return $this->name;
    }
}

// Konkretna pizza
class Margherita extends Pizza
{
    public function __construct()
    {
         $this->name = 'Margherita';
    }
}

//użycie

$pizza = new Margherita();

$oven = new PizzaOven();
$oven->bake($pizza);

[Adam]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.