![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 9.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Jako, że zacząłem uczyć się OOP i postanowiłem sobie napisać CMS (tylko w celu nauki) z wykorzystaniem OOP PHP. Jednak natrafiłem na problem. Błędy: Kod Notice: Undefined variable: db in D:\xampp\htdocs\CMS\class\User.php on line 13 Fatal error: Uncaught Error: Call to a member function prepare() on null in D:\xampp\htdocs\CMS\class\User.php:13 Stack trace: #0 D:\xampp\htdocs\CMS\index.php(9): User->addNew('siema', 'na5tyk@o2.pl', 'xxx', 'xxx') #1 {main} thrown in D:\xampp\htdocs\CMS\class\User.php on line 13 Struktura projektu (* - folder): * CMS -- index.php ** class --- User.php ** config --- database.php index.php
User.php
database.php
$repeatPassword jest dodane przyszłościowo gdy będę sprawdzał poprawność danych. I teraz pytanie. Czy przesłanie zmiennej $db w parametrze metody będzie dobre czy jest lepszy sposób? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 875 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Proponuję zastosować DI
I w linijce, użyć parametru $db dla klasy User
a w klasie stworzyć dodatkową metodę, __construct
Dzięki temu będzie działać Ci połączenie z bazą danych np. w linijce metody addUser, gdzie oczywiście potrzeba dopisać $this
-- Korekta nazwy metody magicznej na poprawną. Ten post edytował Tomplus 17.06.2017, 17:11:10 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 9.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Po zastosowaniu twoich porad teraz mam błąd:
Kod Notice: Undefined property: User::$db in D:\xampp\htdocs\CMS\class\User.php on line 19
Fatal error: Uncaught Error: Call to a member function prepare() on null in D:\xampp\htdocs\CMS\class\User.php:19 Stack trace: #0 D:\xampp\htdocs\CMS\index.php(8): User->addNew('siema', 'na5tyk@o2.pl', 'gowno', 'gowno') #1 {main} thrown in D:\xampp\htdocs\CMS\class\User.php on line 19 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 875 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
To może pokaż jak zaimplementowałeś te porady w klasie User.
Chociaż zgodnie z tym co masz w komunikacie to coś nie tak masz w linii 19. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 9.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
index.php
User.php
Ten post edytował Na 5tyk 17.06.2017, 13:49:12 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 875 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie $db tylko $this->db w metodach klasy do której wstrzyknąłeś $db.
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 9.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Myślę, że połączenie jest dobrze zrobione:
Nie $db tylko $this->db w metodach klasy do której wstrzyknąłeś $db. Mówimy tylko o funkcji addNew(). |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie
function __constructor($db) { a: function __construct($db) { -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 9.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie <3
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 16:08 |