Jak poszerzyć swoją "zaawansowaną" wiedzę o PHP? (szybko) [zamknięte]

Pracuję z PHP od lat i bardzo dobrze opanowałem ten język, stworzyłem wiele zaawansowanych i niezbyt zaawansowanych systemów, które działają bardzo dobrze.

Problem, na który wpadam, polega na tym, że uczę się tylko wtedy, gdy znajduję potrzebę czegoś, czego wcześniej się nie nauczyłem. To powoduje, że szukam rozwiązań i innych kodów, które rozwiązują problem, a więc dowiem się o nowej funkcji lub strukturze, której wcześniej nie widziałem. W ten sposób nauczyłem się wielu z moich lepszych technik (takich jak zajęcia prowadzone przez Amazon, Google lub inne duże firmy).

Głównym problemem jest koncepcja nie bycia w stanie nauczyć się czegoś, jeśli nie wiesz, że to istnieje. Na przykład, Zajęło mi kilka miesięcy programowania, aby dowiedzieć się o funkcji empty(), a ja po prostu sprawdzić długość łańcucha za pomocą strlen(), aby sprawdzić puste wartości.

Teraz zajmuję się budowaniem coraz większych systemów i zacząłem czytać blogi takie jak highscalability.com i badał replikację MySQL i dane serwera do skalowania. Wiem, że struktura Twojego kodu jest bardzo ważna, aby pełne systemy działały.

Po przeczytaniu ostatniego bloga o strukturze Reddita, zadałem sobie pytanie, Czy istnieją jakieś standardowe lub "akceptowane systemy".

Zajrzałem do frameworków (używałem Kohany, czego żałowałem, ale uznałem, że frameworki PHP nie są dla mnie) i wolę własną bibliotekę funkcji niż o ramy.

Moja obecna struktura jest mieszanką WordPress, Kohana i mojej wiedzy.

Sposoby, które postrzegam jako potencjalnie korzystne, to:

  • czytaj blogi
  • przeczytaj tutoriale
  • Pracuj z kimś innym
  • przeczytaj książkę

Jaki byłby najlepszy sposób (y), aby "dostać się do następnego poziomu" poziomu bycia bardzo dobrym programistą systemu?

Author: Kerry Jones , 2010-06-01

15 answers

Każdy, kto chce być programistą PHP, zawsze bierze tylko pierwsze słowo i całkowicie ignoruje drugie.

Podczas gdy "programowanie "jest o wiele ważniejsze niż "PHP", aby być profesjonalistą PHP, należy być programistą w pierwszej kolejności.

Więc zagłosowałbym na ostatnią-czytanie książek. Nie na PHP, ale na programowaniu w ogóle. Grady Booch 'S, Martin Fowler's, a nawet stare Donald Knuth' s.
Byłoby też miło wziąć spojrzenie na inne języki, takie jak Java lub Python. Nie po to, by się do nich przerzucić, ale by się od nich uczyć.

 116
Author: Your Common Sense,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-15 11:07:34

Wolę własną bibliotekę funkcji zamiast mieć framework

Odnosisz się do 'biblioteki funkcji' i 'frameworka' jako odrębnych pojęć (dobrze!) więc dlaczego nie spróbować trochę podnieść ante i przekształcić tę bibliotekę funkcji w framework? Jest to świetny sposób na naukę, ale nie najlepszy sposób na umiejętności RYNKOWE;)

Jest to również świetny sposób, aby nauczyć się źle więc zanim zaczniesz, musisz trochę poszperać.

"musi mieć " cechy

Istnieją pewne funkcje, które mają prawie wszystkie frameworki i jest ku temu powód. Zbadaj je; dowiedz się dlaczego są obecne i jakie są ich odmiany; wybierz, które implementacje chcesz włączyć do swojego frameworka.

    [21]} zorientowane obiektowo (to jest klucz do tego, dlaczego piszesz framework, a nie tylko używasz biblioteki funkcji) {22]}
  • stosowanie szablonów (sprawdź i zacznij zadawać sobie pytanie, dlaczego tak wiele frameworki używają kontrolera aplikacji W przeciwieństwie do kontrolera Front ... a czy są jakieś platformy, które używają kontrolerów stron ?
  • Podstawowa struktura MVC
  • Wyczyść Adresy URL

Funkcje platform innych niż PHP, które chcesz zrozumieć i emulować

Nie mam pojęcia, co Cię interesuje, więc na tym poprzestanę.

Opublikuj!

Ta część jest ważna, ponieważ Nathan ma rację {62]}: Twoja praca musi być postrzegana, kwestionowana, krytykowana i korygowana przez innych ludzi. Nie zostawiaj tej lampy pod buszlem - musi być seen; umieść go w Google code lub sourceforge czy coś takiego, a jeśli ludzie będą się kłopotać, patrząc na to poważnie, musisz traktować to poważnie; musisz utrzymywać testy jednostkowe i testy regresyjne; musisz używać kontroli wersji; musisz dobrze komentować, z dużą /* header comment */ na górze KAŻDEGO pliku i przydatnymi komentarzami generującymi dokumenty dla każdej klasy i jej członków.

Podsumowanie

Jeśli zrobisz to wszystko, możesz dowiedzieć się (na wysokim poziomie) o innych platformach. Zdecydowanie możesz "ding 40" jako programista PHP. Możesz dowiedzieć się o testach jednostkowych; o testach regresyjnych. Możesz dowiedzieć się, jak skutecznie dokumentować.

Gwarantuję, że Twój framework wyjdzie "idiosynkratyczny i prawdopodobnie beznadziejny" , ale możesz się wiele nauczyć pisząc go. Pamiętaj tylko, że framework nie jest produktem; to podróż... tak jakby.

 28
Author: Richard JP Le Guen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-08 18:41:59
  1. zajrzyj do ukrytych funkcji PHP i predefiniowanych interfejsów PHP
  2. Ucz się różnych języków. Ucz się języków, które mają bardziej stromą krzywą uczenia się niż PHP. Za każdym razem, gdy zwracam uwagę na zalety innych języków nad PHP, jestem oskarżany o PHP bashing, głównie ludzi, którzy oczywiście nigdy nie opanowali innego języka na wysokim poziomie. Ale zaryzykuję. Proponuję Ruby, Python, Pearl i haXe (jako ściśle wpisany odpowiednik). Once you zrób to, spróbuj zastosować swoją nową wiedzę do PHP. Lub po prostu odejść od PHP, w przypadku, gdy nie chcesz wrócić (co myślę, że nie jest mało prawdopodobne, aby się stało).
  3. Naucz się radzić sobie z krytyką. Twoja reakcja na post Nathana pokazała wyraźnie, że nie możesz sobie z tym poradzić. Ma całkowitą rację.
    • patrząc teraz na mój pierwszy framework PHP, muszę powiedzieć, że był całkiem gówniany. W tym czasie uważałem, że jest świetny (i nadal jest lepszy niż wiele kodu produkcyjnego, które już widziałem rozmieszczonych). Mimo to miał wiele wad. Jeśli nie jesteś totalnym geniuszem, Twoje pierwsze frameworki będą wyglądać okropnie, jeśli spojrzysz na nie kilka lat później (zakładając, że ewoluujesz).
    • właściwie każdy framework, który stworzysz, będzie wyglądał gorzej z upływem czasu(zakładając, że nie przestaniesz się rozwijać). Z tego powodu równie dobrze możesz korzystać z dostępnych frameworków i skupić się bardziej na tworzeniu aplikacji. Jeśli framework, którego używasz, ma ograniczenia, rozważ przyczynianie się, a nie pisanie jeszcze kolejny framework PHP.
    • nadszedł czas, aby wybrać pisanie własnych frameworków (nie tylko do zabawy/nauki, ale do wdrażania produkcji), gdy twoje wymagania przewyższają to, co oferują inne frameworki, a nie wtedy, gdy po prostu nie podoba ci się pomysł pracy z takim frameworkiem. To częsty błąd, który popełniłem sam. Ale teraz mogę powiedzieć, że nauczyłem się z tego. Ale jeśli poprosisz o radę (której niestety wtedy nie robiłem), otrzymasz takie odpowiedzi.
    • uczysz się dużo z pracy z kodem nie napisałeś sam. Nie tylko podnosisz koncepcje promowane przez frameworki, w które inni dużo myślą, ale także uczysz się być produktywnym, elastycznym, zdolnym do pracy w zespole i do wykonywania pracy (przy jednoczesnym uzyskaniu dość dobrych wyników).
    • przypuszczam, że nie możesz myśleć, że jesteś lepszy niż każdy zespół projektu PHP open source, w przeciwnym razie zapytałbyś. Przezwyciężyć upartą instynktowną potrzebę odkrywania koła na nowo każdego młodego programista ma i rośnie, aby rozwiązywać problemy, z którymi nikt jeszcze nie poradził.
  4. Dowiedz się, jaka jest różnica między biblioteką komponentów a frameworkiem. Ponieważ uważasz, że możesz zastąpić framework "własną biblioteką funkcji", prawdopodobnie nie rozumiesz, jaki jest sens frameworków. Spójrz na inwersja zależności, inwersja sterowania i iniekcja zależności .
  5. Dowiedz się o projektowaniu oprogramowania. Spójrz na zasady OO jak solidne i uchwyt .
  6. Wypróbuj różne paradygmaty. AOP, Programowanie funkcyjne. Zwiększ swoje umiejętności OO używając języków o silniejszej orientacji obiektowej, takich jak Ruby, Objective-C lub Smalltalk.
  7. Spójrz na frameworki PHP takie jak Flow3, Symfony, PHP igniter i CakePHP. Już wskazałem, dlaczego powinieneś to zrobić.
  8. Jak wspomniano w innym komentarzu, powinieneś rozważyć inne magazyny niż RDBMs. SQL i OOP naprawdę nie pasują do siebie. Spójrz na OODBMS, różne warstwy abstrakcji baz danych, przechowuje klucze-wartości, przechowuje dokumenty, takie jak CouchDB i MongoDB, dystrybuuje serwery pamięci podręcznej jako memcache itp.
 18
Author: back2dos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:33

Oto kilka myśli:

  • Spróbuj różnych rzeczy. Naucz się nowego języka. Czasami w procesie uczenia się tego innego języka, faktycznie sprawia, że lepiej na obu.

  • Przyczynić się do projektu open-source.

  • wysoka skalowalność i PHP / MySQL nie są przyjaciółmi . Istnieją dziś technologie, które są budowane właśnie do tego. węzeł.js i Redis, żeby wymienić parę.

  • Odpowiedz na pytania w SO. Problemy innych ludzi mogą sprawić, że myślisz nieszablonowo i poprawiasz proces próbowania pomocy, a także robisz komuś coś miłego.

  • [ postaram się tu dodać jak coś jeszcze przypomnę to właśnie obudziłem się pijąc kawę: D]

 11
Author: stagas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-08 06:50:45

Naucz się robić to, co już wiesz ... w inny sposób. Przykłady:

  • w innym języku
  • na innej platformie
  • równolegle / rozproszone
  • poprzez framework (tak, zdecydowałeś, że "nie są dla ciebie" - może spróbuj innego, czasami są bardzo różne od siebie)
 3
Author: Piskvor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-01 08:50:44

Może powinieneś ponownie przyjrzeć się frameworkom, sugerowałbym rzucenie okiem na Zend Framework, ponieważ jest to bardziej biblioteka komponentów, których możesz używać według własnego uznania, i nie narzuca sztywnej struktury, którą musisz przestrzegać (jak niektóre inne frameworki), chociaż sugeruje (całkiem rozsądny IMHO) układ projektu. Dobrym punktem wyjścia byłoby przetrwanie głębokiego końca .

Rzeczy, o których jeszcze nie wspomniałeś, a które mogą okazać się przydatne (zwłaszcza w większe projekty): {]}

 3
Author: wimvds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-08 08:00:17

Proste: Zrób to . Potrzeby sprawią, że się nauczysz. Znajdź sposób na zaangażowanie się w coraz bardziej zaawansowane projekty, czy to komercyjne, czy open source. Nie ma innego sposobu, aby się czegoś nauczyć.

 3
Author: Halil Özgür,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-01 18:20:49

Dołączam do forów dyskusyjnych i staram się rozwiązywać problemy innych ludzi. Czasami pojawiają się dość trudne pytania, które zmuszają cię do przeprowadzenia pewnych badań. Jeśli nie możesz odpowiedzieć, możesz poczekać na kogoś, kto może i nauczyć się czegoś wtedy.

Jeśli chodzi o frameworki, ucz się od nich. Ja też toczę, ponieważ większość frameworków może być raczej powolna. Chociaż wystarczająco szybki dla większości stron internetowych.

Polecam również zajrzeć do biblioteki PHP Facebook ' a. Robią tam ciekawe rzeczy.

 3
Author: Brent Baisley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-05 19:49:29

Najlepiej kupić książkę o efektywnych algorytmach . W życiu każdego studenta informatyki przychodzi taki czas, że musi on je studiować. Problemy, które są omawiane / rozwiązane istnieją abstrakcje prawie każdego problemu świata rzeczywistego, z którym możesz kiedykolwiek się zmierzyć.

Poza tym czytanie blogów o tym, jak inni to robili, jest doskonale, ponieważ pomaga zrozumieć, jak praktycznie używać (a może nawet wdrażać) zasady efektywnego algorytmy.

Pozdrawiam.

 2
Author: aefxx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-01 09:24:02

Nie dość można powiedzieć o pracy z innymi programistami. Znam szczególnie 3 programistów, 2 z którymi pracuję na co dzień, którzy rozwalają mnie swoją wiedzą. Pytam ich o zdanie na temat wszystkiego, co robię, nie dlatego, że kwestionuję własne pomysły, ale bardziej, że chcę usłyszeć inne pomysły, zwłaszcza od ludzi, których szanuję jako programistów. Uczę się od tych ludzi więcej niż w jakikolwiek inny sposób. Jeśli nie masz dostępu do innych starszych programistów, zdecydowanie napisz na SO lub innym dev Forum i pytaj ludzi o opinie, pytaj ludzi, jak podchodziliby do konkretnego projektu / problemu. Nie nauczysz się nowych technik / metod / funkcji ogólnie, chyba że zobaczysz, że są używane (skąd wiesz, czego szukać, jeśli nie wiesz, że istnieje?)

Również, jak już wspomniano, wziąć udział w aplikacji systemu operacyjnego. Przejdź do sourceforge i znajdź projekt potrzebujący dewelopera. Lub Pobierz aplikację i spróbuj napisać do niej wtyczkę (piszę wtyczkę do Invision 3.0 atm i uczę się kilku rzeczy.)

Mam nadzieję, że to pomoże.

 2
Author: Christian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-08 07:14:36

Czytaj cudze kody. Masz teraz własną bibliotekę, ale możesz uzyskać oświecenie podczas czytania Źródła innych aplikacji. Następnie zadaj sobie pytanie " dlaczego. bądź autorem bloga, zamiast czytelnika. Ponadto, kłaść większy nacisk na programistę niż na język. Raczej przyjrzyj się rozwiązaniom, które już rozwiązują problem i spróbuj je odtworzyć własną wiedzą. Powodzenia i dobrej zabawy!

 1
Author: Shyam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-08 12:06:24

Podejście do patrzenia na kod innych programistów jest zdecydowanie dobrym sposobem na nauczenie się" dobrych "lub" złych " praktyk. Po przeczytaniu innego kodu rozwijasz "uczucie" dobrego kodu.

Zdecydowanie polecam frameworki takie jak Zend Framework, symfony, CakePHP czy Agavi, ponieważ wielu współpracowników przygląda się temu kodowi i stale je rozwija w kierunku "idealnego" rozwiązania (które oczywiście nigdy nie zostanie osiągnięte...);) Nadal możesz podjąć decyzję o stworzeniu własnych klas zamiast te, które oferuje framework...

Z tak długim tłem PHP można rozważyć wkład w framework open source. Dyskusje z innymi programistami prowadzą do przodu w szybszy sposób.

Pokazanie kodu innym i Prośba o konstruktywną opinię ma ten sam efekt. Nigdy nie wiesz, jak dobry jesteś, dopóki nie porównasz swoich umiejętności z innymi. Zawsze w konstruktywny sposób. Byłby to naturalny proces, jeśli chodzi o tworzenie frameworków typu open source. ;)

 1
Author: udo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-15 13:50:29

Powinieneś pracować z przykładami, pracować z nimi, gdy je rozwijasz, więc dowiesz się, jak rozszerzać przykłady, czyniąc je bardziej funkcjonalnymi i dając więcej funkcji.

Chociaż dobrze jest stworzyć coś, czego do tej pory nauczyłeś się w PHP. Aby ćwiczyć więcej, należy stworzyć coś w rodzaju, system rezerwacji, itp. Prędzej czy później będziesz w stanie rozwinąć się bardziej, ucząc się więcej, gdy będziesz uczyć się więcej w PHP, co sprawi, że Twój rozwój będzie znacznie lepszy.

 0
Author: MacMac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-01 08:58:55

Możesz zapytać swoją firmę, czy może zapłacić ci egzamin Zend PHP certification. Nauka do tego egzaminu zobowiązywałaby Cię do dobrej znajomości PHP i szkolenia poprzez przeczytanie dużej ilości dokumentacji, przewodnika po Zend study guide, a także poprzez szkolenie z próbnych egzaminów. To bardzo skuteczny sposób na poprawę, i wygląda całkiem dobrze w CV.

 0
Author: greg0ire,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-05 19:48:29

"moja własna biblioteka funkcji" = = "a [idiosynkratyczny i prawdopodobnie beznadziejny] framework".

Polecam uczenie się Symfony ponieważ deweloperzy wydają się konsekwentnie dążyć do tego, aby wszystko było zgodne z "najlepszymi" praktykami ... ale prawdopodobnie możesz się wiele nauczyć z dowolnego z popularnych frameworków.

Nie pisz własnego frameworka. Proszę.

 -11
Author: Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-05 00:31:00