Symfony w przykładach

Włodzimierz Gajda
Symfony w przykładach
Popraw tę książkę | Dodaj inne wydanie

Opis

Spis treści:Podziękowania (13)Wstęp (15)Część I: Tworzenie stron WWW w Symfony (17)Rozdział 1. Pierwszy projekt w Symfony (19) * Przykład 1. Hello, World! (19) * ROZWIĄZANIE (19) o Krok 1. Utwórz nowy projekt Symfony (19) o Krok 2. Utwórz aplikację frontend (20) o Krok 3. Utwórz moduł o nazwie glowny (22) o Krok 4. Utwórz akcję glowny/powitanie (23) o Krok 5. Odwiedź akcję glowny/powitanie (24) * Zestawienie poznanych poleceń (24) * Struktura aplikacji tworzonej w Symfony (25) * Środowiska (28) * Pasek narzędzi Debug toolbar (30) * Uruchomienie gotowego projektu (32)Rozdział 2. Praca w środowisku NetBeans (33) * Przykład 2. Witaj w NetBeans! (33) * ROZWIĄZANIE (33) o Krok 1. Utwórz nowy projekt Symfony w NetBeans (33) o Krok 2. Utwórz moduł glowny w aplikacji frontend (38) o Krok 3. Usuń akcję glowny/index (40) o Krok 4. Utwórz akcję glowny/powitanie (40) o Krok 5. Zmień tytuł strony glowny/powitanie (41) o Krok 6. Zmień adres URL strony głównej (42) o Krok 7. Wyczyść pamięć podręczną aplikacji (43)Rozdział 3. Wymiana szablonu XHTML/CSS (45) * Przykład 3. Wierszyk pt. Dwa kabele (45) * ROZWIĄZANIE (45) o Krok 1. Utwórz nowy projekt Symfony w NetBeans (45) o Krok 2. Utwórz moduł wierszyk w aplikacji frontend (46) o Krok 3. Usuń akcję glowny/index (46) o Krok 4. Utwórz akcję wierszyk/pokaz (46) o Krok 5. Zmień tytuł strony wierszyk/pokaz (47) o Krok 6. Zmień adres URL strony głównej (47) o Krok 7. Zmień szablon XHTML/CSS (48) * Przebieg wykonania aplikacji (52)Rozdział 4. Dołączanie zewnętrznych zasobów (55) * Przykład 4. Żmija (56) * ROZWIĄZANIE (57) o Krok 1. Utwórz nowy projekt (57) o Krok 2. Utwórz moduł animal (57) o Krok 3. Usuń akcję animal/index (57) o Krok 4. Utwórz akcję animal/show (57) o Krok 5. Zmień tytuł strony (58) o Krok 6. Zmień adres URL strony głównej (58) o Krok 7. Zmień szablon XHTML/CSS (58) o Krok 8. W widoku akcji animal/show wstaw zdjęcie żmii (60) * Analiza kodu XHTML generowanego przez aplikację (61)Rozdział 5. Hiperłącza (63) * Przykład 5. Fraszki (63) * ROZWIĄZANIE (64) o Krok 1. Utwórz projekt, aplikację i moduł (64) o Krok 2. Usuń akcję wiersz/index (64) o Krok 3. Utwórz akcję wiersz/dogoscia (65) o Krok 4. Utwórz akcję wiersz/naswojeksiegi (66) o Krok 5. Utwórz akcję wiersz/ozywocieludzkim (67) o Krok 6. Zmień szablon XHTML/CSS (67) o Krok 7. Zmodyfikuj hiperłącza zawarte w menu (69) o Krok 8. Zmień adresy URL fraszek (70) o Krok 9. Zmień tytuły stron serwisu (73)Rozdział 6. Strona błędu 404 (75) * Przykład 6. Gady (75) * ROZWIĄZANIE (77) o Krok 1. Utwórz nowy projekt, aplikację i moduł (77) o Krok 2. Zmień akcje modułu strony (77) o Krok 3. Zmień szablon XHTML/CSS (78) o Krok 4. Wymień adresy URL w pliku routing.yml (79) o Krok 5. Zmień tytuły stron serwisu (80) o Krok 6. Odwiedź domyślną stronę błędu 404 (81) o Krok 7. Utwórz akcję strony/blad404 (82) o Krok 8. Zdefiniuj stronę błędu 404 aplikacji frontend (83) * Analiza odpowiedzi HTTP (85)Rozdział 7. Publikowanie projektu na serwerze hostingowym (87) * Przykład 7.1. Zabytki Lublina (87) * ROZWIĄZANIE (88) o Etap 1. Wykonaj aplikację na komputerze lokalnym (88) o Etap 2. Opublikuj witrynę na serwerze hostingowym (91) * Przykład 7.2. Gady (publikowanie na serwerze NetArt) (96) * ROZWIĄZANIE (96) o Krok 1. Przekopiuj bibliotekę Symfony na serwer (96) o Krok 2. Wyczyść pamięć podręczną i usuń kontrolery deweloperskie (96) o Krok 3. Zmodyfikuj ścieżkę do biblioteki Symfony (96) o Krok 4. Przekopiuj projekt na serwer (97) o Krok 5. Zablokuj dostęp do plików (97) o Krok 6. Zmień domenę projektu na gady.twojadomena.nazwa.pl (97)Rozdział 8. Czego dowiedziałeś się w pierwszej części? (99)Część II: Warstwy M oraz V (101)Rozdział 9. Pierwszy projekt Symfony wykorzystujący bazy danych (103) * Przykład 9. Najdłuższe rzeki świata (103) * ROZWIĄZANIE (104) o Etap 1. Przygotuj pustą bazę danych (104) o Etap 2. Zaprojektuj strukturę bazy danych (105) o Etap 3. Utwórz szkielet aplikacji (109) o Etap 4. Wymień szablon XHTML/CSS (117) o Etap 5. Dostosuj wygląd akcji rzeka/index (117) * Zestawienie plików (119) o Klasy dostępu do bazy danych (120) o Przebieg wykonania aplikacji (123) o Uruchomienie gotowego projektu (124)Rozdział 10. Dostosowywanie klas generowanych przez Propel (125) * Przykład 10. Tatry (125) * ROZWIĄZANIE (125) o Krok 1. Utwórz pustą bazę danych (125) o Krok 2. Zaprojektuj bazę danych (126) o Krok 3. Utwórz projekt z aplikacją frontend (127) o Krok 4. Skonfiguruj dostęp do bazy danych (127) o Krok 5. Wypełnij bazę danych rekordami (127) o Krok 6. Wygeneruj panel administracyjny CRUD (129) o Krok 7. Dostosuj klasy wygenerowane przez Propel (130) o Krok 8. Dostosuj moduł szczyt (133) o Krok 9. Dostosuj wygląd witryny (134) * Testowanie poprawności generowanego kodu XHTML (135)Rozdział 11. Akcja show - wyświetlanie szczegółowych danych rekordu (137) * Przykład 11. Piosenki wojskowe (138) * ROZWIĄZANIE (138) o Krok 1. Utwórz pustą bazę danych (138) o Krok 2. Zaprojektuj bazę danych (139) o Krok 3. Utwórz projekt z aplikacją frontend (140) o Krok 4. Skonfiguruj dostęp do bazy danych (140) o Krok 5. Dostosuj klasy wygenerowane przez Propel (140) o Krok 6. Napisz dynamiczny skrypt YAML odpowiedzialny za wypełnianie bazy (141) o Krok 7. Wygeneruj panel CRUD z akcjami show (144) o Krok 8. Dostosuj moduł piosenka (144) o Krok 9. Dostosuj wygląd witryny (148) o Krok 10. Zmień tytuły stron (148) o Krok 11. Zmodyfikuj adresy URL stron z piosenkami (150)Rozdział 12. Identyfikacja rekordów na podstawie wartości slug (151) * Przykład 12. Artykuły na temat HTML/CSS (152) * ROZWIĄZANIE (153) o Krok 1. Przeanalizuj pliki XHTML z treścią artykułów (153) o Krok 2. Przygotuj funkcje pomocnicze (153) o Krok 3. Utwórz pustą bazę danych artykuly (162) o Krok 4. Zaprojektuj bazę danych (162) o Krok 5. Utwórz projekt z aplikacją frontend (163) o Krok 6. Skonfiguruj dostęp do bazy danych (163) o Krok 7. Dostosuj klasy wygenerowane przez Propel (164) o Krok 8. Przygotuj skrypt, który wypełni bazę danych (166) o Krok 9. Wypełnij bazę danych rekordami (168) o Krok 10. Wygeneruj panel CRUD z akcjami show (168) o Krok 11. Usuń zbędne akcje modułu artykul (169) o Krok 12. Zmień metodę identyfikowania rekordów (169) o Krok 13. Wyłącz cytowanie kodu XHTML (170) o Krok 14. Dostosuj wygląd witryny (172) o Krok 15. Zmień tytuły stron (173) o Krok 16. Zmodyfikuj adresy URL stron z artykułami (173) o Krok 17. Zminimalizuj liczbę bajtów pobieraną w akcji artykul/index (173)Rozdział 13. Komponent menu (177) * Przykład 13. Treny (177) * ROZWIĄZANIE (178) o Krok 1. Utwórz pustą bazę danych (178) o Krok 2. Zaprojektuj bazę danych (179) o Krok 3. Utwórz projekt z aplikacją frontend (179) o Krok 4. Wykonaj moduł glowny z akcjami powitanie oraz blad404 (179) o Krok 5. Skonfiguruj dostęp do bazy danych (180) o Krok 6. Dostosuj klasy wygenerowane przez Propel (180) o Krok 7. Przygotuj zadanie propel:import-danych (181) o Krok 8. Wypełnij bazę danych rekordami (182) o Krok 9. Wygeneruj panel CRUD z akcjami show (183) o Krok 10. Usuń zbędne akcje modułu artykul (183) o Krok 11. Zmień metodę identyfikowania rekordów (183) o Krok 12. Zmień adresy URL (183) o Krok 13. Przygotuj komponent menu (184) o Krok 14. Dostosuj wygląd witryny (185) o Krok 15. Zmień tytuły stron (185) o Krok 16. Wykonaj zrzut bazy danych (185)Rozdział 14. Umieszczanie plików binarnych w bazie danych (189) * Przykład 14. Pliki do pobrania (189) * ROZWIĄZANIE (189) o Krok 1. Utwórz pustą bazę danych (189) o Krok 2. Zaprojektuj bazę danych (190) o Krok 3. Utwórz projekt z aplikacją frontend (191) o Krok 4. Wykonaj moduł glowny z akcją blad404 (191) o Krok 5. Skonfiguruj dostęp do bazy danych (191) o Krok 6. Dostosuj klasy wygenerowane przez Propel (191) o Krok 7. Przygotuj zadanie propel:import-danych (192) o Krok 8. Wypełnij bazę danych rekordami (193) o Krok 9. Wygeneruj panel CRUD (194) o Krok 10. Usuń zbędne akcje modułu artykul (194) o Krok 11. Zmodyfikuj funkcję executeShow() (194) o Krok 12. Zmodyfikuj widok akcji plik/show (195) o Krok 13. Dostosuj widok akcji plik/index (196) o Krok 14. Zmień adresy URL (197) o Krok 15. Dostosuj wygląd witryny (198)Rozdział 15. Relacje 1:n (199) * Przykład 15. Kontynenty/państwa (203) * ROZWIĄZANIE (204) o Krok 1. Przeanalizuj szablon XHTML (204) o Krok 2. Utwórz pustą bazę danych (205) o Krok 3. Zaprojektuj bazę danych (205) o Krok 4. Utwórz projekt z aplikacją frontend (205) o Krok 5. Wykonaj moduł glowny (205) o Krok 6. Skonfiguruj dostęp do bazy danych (206) o Krok 7. Dostosuj klasy wygenerowane przez Propel (206) o Krok 8. Przygotuj zadanie propel:import-danych (207) o Krok 9. Wypełnij bazę danych rekordami (209) o Krok 10. Wygeneruj panele CRUD dla tabel kontynent oraz panstwo (209) o Krok 11. Usuń zbędne akcje modułów kontynent oraz panstwo (209) o Krok 12. Zmodyfikuj funkcje executeShow() (209) o Krok 13. Dostosuj widoki akcji kontynent/index oraz panstwo/index (210) o Krok 14. Zmodyfikuj widok akcji kontynent/show (210) o Krok 15. Zmodyfikuj widok akcji panstwo/show (211) o Krok 16. Zmień adresy URL (211) o Krok 17. Dostosuj wygląd witryny (212) o Krok 18. Ustal tytuły stron (213)Rozdział 16. Relacje n:m (215) * Przykład 16. Filmy/Aktorzy (217) * ROZWIĄZANIE (218) o Krok 1. Utwórz pustą bazę danych (218) o Krok 2. Zaprojektuj bazę danych (219) o Krok 3. Utwórz projekt z aplikacją frontend (219) o Krok 4. Wykonaj moduł glowny (219) o Krok 5. Skonfiguruj dostęp do bazy danych (219) o Krok 6. Dostosuj klasy wygenerowane przez Propel (220) o Krok 7. Przygotuj zadanie propel:import-danych (221) o Krok 8. Wypełnij bazę danych rekordami (223) o Krok 9. Wygeneruj panele CRUD (223) o Krok 10. Usuń zbędne akcje modułów film oraz aktor (223) o Krok 11. Zmodyfikuj funkcje executeShow() (224) o Krok 12. Dostosuj widoki akcji film/index oraz aktor/index (224) o Krok 13. Zmodyfikuj widok akcji film/show (224) o Krok 14. Zmodyfikuj widok akcji aktor/show (224) o Krok 15. Zmień adresy URL (225) o Krok 16. Dostosuj wygląd witryny (225) o Krok 17. Ustal tytuły stron (226)Rozdział 17. Widoki częściowe (227) * Przykład 17. Czcionki projektów CSS Zen Garden (228) * ROZWIĄZANIE (230) o Krok 1. Przeanalizuj dane (230) o Krok 2. Utwórz pustą bazę danych (231) o Krok 3. Zaprojektuj bazę danych (231) o Krok 4. Utwórz projekt z aplikacją frontend (232) o Krok 5. Skonfiguruj dostęp do bazy danych (232) o Krok 6. Przygotuj zadanie propel:import-danych (233) o Krok 7. Wypełnij bazę danych rekordami (235) o Krok 8. Dodaj metody zliczające powiązane rekordy (235) o Krok 9. Przygotuj zadanie propel:przelicz (238) o Krok 10. Przelicz rekordy (238) o Krok 11. Wykonaj moduł glowny (238) o Krok 12. Dostosuj klasy wygenerowane przez Propel (239) o Krok 13. Dodaj metody ułatwiające dostęp do obiektów połączonych relacją n:m (239) o Krok 14. Wygeneruj panele CRUD (240) o Krok 15. Usuń zbędne akcje (240) o Krok 16. Zmodyfikuj funkcje executeShow() (240) o Krok 17. Przygotuj widok częściowy projekt/lista (240) o Krok 18. Dostosuj widok akcji projekt/index (241) o Krok 19. Dostosuj widok akcji czcionka/show (242) o Krok 20. Przygotuj widok częściowy czcionka/lista (244) o Krok 21. Dostosuj widok akcji czcionka/index (245) o Krok 22. Dostosuj widok akcji projekt/show (245) o Krok 23. Dostosuj widok akcji modułu rodzina (245) o Krok 24. Zmień adresy URL (246) o Krok 25. Dostosuj wygląd witryny (247) o Krok 26. Ustal tytuły stron (247)Rozdział 18. Publikowanie aplikacji, która wykorzystuje bazę danych, na serwerze hostingowym (249) * Przykład 18.1. NotH - edytor kodu XHTML/CSS (249) * ROZWIĄZANIE (250) o Krok 1. Przeanalizuj dane (250) o Krok 2. Utwórz pustą bazę danych (252) o Krok 3. Zaprojektuj bazę danych (252) o Krok 4. Utwórz projekt z aplikacją frontend (252) o Krok 5. Skonfiguruj dostęp do bazy danych (253) o Krok 6. Dostosuj klasy wygenerowane przez Propel (253) o Krok 7. Przygotuj zadanie propel:import-danych (253) o Krok 8. Wypełnij bazę danych rekordami (256) o Krok 9. Wykonaj moduł glowny (256) o Krok 10. Wygeneruj panele CRUD (256) o Krok 11. Usuń zbędne akcje (257) o Krok 12. Zmodyfikuj funkcje executeShow() (257) o Krok 13. Dostosuj widok akcji menu/show (257) o Krok 14. Dostosuj widok akcji img/show (257) o Krok 15. Dostosuj widok akcji plik/show (258) o Krok 16. Dostosuj akcje modułu podrecznik (258) o Krok 17. Dostosuj akcje modułu skroty (258) o Krok 18. Wykonaj komponent menu/menu (259) o Krok 19. Wykonaj komponent menu/menupionowe (260) o Krok 20. Dostosuj wygląd witryny (261) o Krok 21. Zmień adresy URL (261) o Krok 22. Ustal tytuły stron (263) * Przykład 18.2. NotH - publikacja na serwerze (263) * ROZWIĄZANIE (264) o Krok 1. Zrzut bazy danych (264) o Krok 2. Utwórz pustą bazę danych na serwerze (264) o Krok 3. Wykonaj import zawartości bazy danych (264) o Krok 4. Przekopiuj na serwer bibliotekę Symfony 1.4 (266) o Krok 5. Utwórz folder przeznaczony na projekt (266) o Krok 6. Zablokuj dostęp do plików projektu (268) o Krok 7. Przekopiuj projekt na serwer (268) o Krok 8. Przekieruj domenę na folder noth/web/ (268) o Krok 9. Zmodyfikuj plik noth/web/.htaccess (268) o Krok 10. Zmodyfikuj plik noth/config/databases.yml (269) o Krok 11. Zmodyfikuj ścieżkę do biblioteki Symfony (270)Rozdział 19. Czego dowiedziałeś się w drugiej części? (271)Część III: Panele administracyjne (273)Rozdział 20. Tłumaczenie interfejsu witryny (275) * Przykład 20. Dzień dobry (275) * ROZWIĄZANIE (276) o Krok 1. Utwórz nowy projekt, aplikację i moduł (276) o Krok 2. Ustal adres strony głównej (276) o Krok 3. Dostosuj akcję glowny/index (276) o Krok 4. Dostosuj widok akcji glowny/index (276) o Krok 5. Ustal domyślny język aplikacji (277) o Krok 6. Zdefiniuj tłumaczenia komunikatu Good morning (277) o Krok 7. Ustal tytuł witryny oraz oznacz język dokumentu XHTML (278) o Krok 8. Przetestuj witrynę (279)Rozdział 21. Pierwszy panel administracyjny (283) * Przykład 21. Piosenki wojskowe (panel administracyjny) (283) * ROZWIĄZANIE (284) o Krok 1. Przeanalizuj przykład 11. (284) o Krok 2. Uruchom przykład 11. (284) o Krok 3. Utwórz aplikację backend i moduł piosenka (284) o Krok 4. Dostosuj wygląd aplikacji backend (285) o Krok 5. Zabezpiecz dostęp do aplikacji backend (288) o Krok 6. Zainstaluj wtyczkę sfGuardAuth (288) o Krok 7. Utwórz konto admin (288) o Krok 8. Uruchom stronę logowania (289) o Krok 9. Logowanie do aplikacji backend z aplikacji frontend (290) o Krok 10. Wylogowanie z aplikacji backend (290) o Krok 11. Dostosuj formularz logowania (291) o Krok 12. Dostosuj panel CRUD (293) o Krok 13. W aplikacji backend dodaj filtr "zapamiętaj mnie" (294)Rozdział 22. Kontekstowe hiperłącza do edycji i usuwania rekordów (295) * Przykład 22. Zbiór zadań C++ (296) * ROZWIĄZANIE (296) o Etap 1. Utwórz nowy projekt i wykonaj aplikację frontend (296) o Etap 2. Wykonaj aplikację backend (307) o Etap 3. Połącz aplikacje frontend i backend (310) o Etap 4. Kontekstowość usuwania rekordów (313) o Etap 5. Ułatwienia w wypełnianiu formularzy (313)Rozdział 23. Administracja kontami użytkowników (317) * Przykład 23. Angaże (318) * ROZWIĄZANIE (319) o Etap 1. Wykonaj aplikację frontend (319) o Etap 2. Zabezpieczanie dostępu do aplikacji frontend (336) o Etap 3. Ustal poziomy dostępu do aplikacji: (339)Rozdział 24. Generowanie paneli administracyjnych (347) * Przykład 24. Turniej czterech skoczni (347) * ROZWIĄZANIE (347) o Etap 1. Utwórz nowy projekt i wykonaj aplikację frontend (347) o Etap 2. Wykonaj aplikację backend (352) o Etap 3. Refaktoryzacja (356)Rozdział 25. Zabezpieczanie paneli administracyjnych przy użyciu protokołu HTTPS (361) * Przykład 25. Turniej Czterech Skoczni (HTTPS) (362) * ROZWIĄZANIE (362) o Krok 1. Zrzut bazy danych (362) o Krok 2. Utwórz pustą bazę danych na serwerze (362) o Krok 3. Wykonaj import zawartości bazy danych (362) o Krok 4. Przekopiuj na serwer bibliotekę Symfony 1.4 (363) o Krok 5. Utwórz folder przeznaczony na projekt (363) o Krok 6. Zablokuj dostęp do plików projektu (363) o Krok 7. Przekopiuj projekt na serwer (363) o Krok 8. Przekieruj domeny (364) o Krok 9. Zmodyfikuj pliki.htaccess (364) o Krok 10. Zmodyfikuj plik tcs/config/databases.yml (365) o Krok 11. Zmodyfikuj ścieżkę do biblioteki Symfony (365)Rozdział 26. Czego dowiedziałeś się w trzeciej części? (367)Literatura (369)Skorowidz (371)Naucz się korzystać z pełni możliwości biblioteki MVC! * Co to jest model MVC i dlaczego warto z niego korzystać? * Jak programować z użyciem biblioteki MVC? * Jak stworzyć aplikację internetową lub stronę WWW dzięki Symfony?Symfony, framework stworzony w języku PHP i mający na celu uproszczenie oraz przyspieszenie tworzenia aplikacji internetowych, znajduje zastosowanie w coraz większej liczbie projektów. Jego wykorzystanie wiąże się ze znacznie efektywniejszym programowaniem, a także pozwala uniknąć wielu błędów i powtarzających się, nużących czynności. Symfony opiera się na modelu MVC i posiada wiele wbudowanych funkcji między innymi ochronę przed atakami CSRF oraz XSS. Ten framework nie ogranicza się do wykorzystania własnej biblioteki, lecz zapewnia także możliwość integracji z innymi. Jeśli chcesz nauczyć się, jak to działa w praktyce, trzymasz w rękach właściwą pozycję!Książka "Symfony w przykładach" jest możliwie najbardziej skondensowaną instrukcją obsługi Symfony. Żeby ją zrozumieć, nie musisz dysponować oszałamiającą wiedzą wystarczą podstawy PHP i XHTML/CSS. Jej autor poprowadzi Cię od najprostszych projektów ("Hello world"), przez nieco bardziej zaawansowane zagadnienia, dotyczące zewnętrznych zasobów, połączenia projektu z bazą danych, publikacji projektu na serwerze hostingowym, aż po tworzenie różnego typu paneli administracyjnych. Krótko mówiąc, na samych konkretnych przykładach przejdziesz drogę do stworzenia własnej, niezawodnie działającej aplikacji internetowej. * Pierwszy projekt w Symfony i praca w środowisku NetBeans * Wymiana szablonu XHTML/CSS i dołączanie zewnętrznych zasobów * Hiperłącza i strona błędu 404 * Publikowanie projektu na serwerze hostingowym * Dostosowywanie klas generowanych przez Propel * Wyświetlanie danych rekordu i identyfikacja rekordów na podstawie wartości slug * Artykuły na temat HTML/CSS * Umieszczanie w bazie danych plików binarnych * Pliki do pobrania i komponent menu * Relacje 1:n oraz n:m i widoki częściowe * Panele administracyjne i tłumaczenie interfejsu witryny * Zbiór zadań C++ * Administracja kontami użytkowników i generowanie paneli administracyjnych * Zabezpieczanie paneli administracyjnych protokołem HTTPSI Ty możesz ułatwić sobie tworzenie doskonałych aplikacji internetowych!
Data wydania: 2011
ISBN: 978-83-246-2788-2, 9788324627882
Wydawnictwo: Grupa Wydawnicza HELION
Stron: 384

Gdzie kupić

Księgarnie internetowe
Sprawdzam dostępność...
Ogłoszenia
Dodaj ogłoszenie
2 osoby szukają tej książki

Moja Biblioteczka

Już przeczytana? Jak ją oceniasz?

Recenzje

Czy ja dobrze widzę, że znasz książkę Symfony w przykładach? Koniecznie daj znać, co o niej myślisz w recenzji!
️ Napisz pierwszą recenzje

Moja opinia o książce

Cytaty z książki

O nie! Książka Symfony w przykładach. czuje się pominięta, bo nikt nie dodał jeszcze do niej cytatu. Może jej pomożesz i dodasz jakiś?
Dodaj cytat
© 2007 - 2024 nakanapie.pl