Wiem, że brzmi to jak dziwaczne pytanie, ale pozwól mi wyjaśnić, skąd pochodzę.
Po ukończeniu college'u dostałem pracę w sklepie PHP. Pracowałem tam półtora roku i pomyślałem, że nauczyłem się wszystkiego o programowaniu.
Potem dostałem pracę jako jednoosobowy wewnętrzny warsztat programistyczny w dużej korporacji, gdzie cała praca była w C #. W moim zaangażowaniu na to stanowisko zacząłem czytać mnóstwo blogów i książek i szybko zdałem sobie sprawę, jak bardzo się myliłem, myśląc, że wiem wszystko. Dowiedziałem się o testach jednostkowych, wzorcach wstrzykiwania zależności i dekoratorach, zasadzie projektowania polegającej na luźnym sprzężeniu, debacie na temat kompozycji nad dziedziczeniem itd., I tak dalej, i tak dalej, i dalej - nadal bardzo to wszystko pochłaniam. Nie trzeba dodawać, że mój styl programowania zmienił się całkowicie w ciągu ostatniego roku.
Teraz łapię projekt php, wykonując kodowanie dla start-upu znajomego i czuję się całkowicie ograniczony w przeciwieństwie do programowania w C #. Naprawdę przeszkadza mi to, że do wszystkich zmiennych w zakresie klasy należy się odwoływać, dodając „$ this->”. Denerwuje mnie, że żadne z IDE, które wypróbowałem, nie ma bardzo dobrej inteligencji i że moje metody testów jednostkowych SimpleTest muszą zaczynać się od słowa „test”. Doprowadza mnie do szału, że dynamiczne typowanie uniemożliwia mi niejawne określanie typu parametru, jakiego oczekuje metoda, i że musisz napisać instrukcję switch, aby wykonać przeciążenie metod. Nie mogę znieść, że nie możesz mieć zagnieżdżonych przestrzeni nazw i musisz użyć operatora :: do wywołania konstruktora klasy bazowej.
Teraz nie mam zamiaru rozpoczynać debaty PHP vs C #, raczej mam na myśli to, że jestem pewien, że są pewne funkcje PHP, o których albo nie wiem, albo o których nie wiem, ale nie używam ich poprawnie. Jestem osadzony w moim wszechświecie C # i mam problemy z widzeniem poza szklaną misą.
Więc pytam, jakie są twoje ulubione funkcje PHP? Jakie rzeczy możesz w nim zrobić, a czego nie możesz lub są trudniejsze w językach .Net?