![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 28.08.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zaczynam się dopiero uczyć PHP OOP. Utworzyłem skrypt połączenia z bazą i logowania. Kiedy próbuję się zalogować otrzymuję komunikat: Fatal error: Call to a member function prepare() on null in C:\xampp\htdocs\try\CLASS\phpLoader.class.php on line 18 Bardzo proszę was o pomoc i wyrozumiałość bo naprawdę mnie ta obiektówka rozłożyła. Oto kod: config.class.php:
phpLoader.php:
login.php:
Na kodowanie hasła, itd. nie patrzcie na razie. Na razie chciałbym się po prostu zalogować. Co robię źle? Dlaczego to nie działa? Co powinienem zmienić/dopisać? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Nie nie nie, wszystko źle.
Nie wolno używać static! Wolno w różnych przypadkach, ale na tym etapie nauki przyjmij, że nie wolno i koniec, będziesz zmuszony myśleć obiektowo. Poczytaj o Dependency Injection, poszukaj czegoś w google w stylu: php login db dependency injection i oprzyj na tym swój przykład. Staraj się używać autoloadera vide Composer. Staraj się używać przestrzeni nazw, które weszły do PHP w 2009 roku, mamy 2015. Nie zastanawiaj się nawet nad tym błędem, bo szkoda Twojego czasu, tylko napisz to porządnie od nowa. Edit: akurat użycie static do metody public function clear jest zasadne ![]() Ten post edytował Damonsson 8.12.2015, 23:24:13 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tylko akurat metoda clear nie ma żadnego uzasadnienia. Jak sam wspomniałeś mamy 2015, PHP 7 z wyrzuconym rozszerzeniem mysql.
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 28.08.2015 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, chciałbym po prostu zrobić połączenie PDO w jednej klasie, a następnie wywołać to połączenie w innej klasie. Przepraszam was za moją nieporadność, słabo rozumiem ta obiektowość. Znacie może jakiś prosty przykład, który jest w stanie pokazać, choc po części o co chodzi?
Dla was też OOP było takie cosmic-science na początku? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wiadomo że wszystko co nowe jest na początku trudne. Zobacz jak robią to inni np. https://github.com/zendframework/zend-db
Możesz też od razu spróbować trochę się biblioteką pobawić albo użyć Propel, Doctrine, itp. Sądzę też że pomogłoby Ci lepiej zrozumieć ideę pobawienie się np nowo wydanym Slim 3 albo Zend Expressive (ten nie wstrzykuje kontenera do zależności więc byłby trudniejszy ale zarazem lepszy do nauki). Mocno wymuszają korzystanie z Service Managera. Ten post edytował viking 9.12.2015, 09:37:10 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 12:25 |