zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden PHP / OOP Vererbung, Konstructor, error!!

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 07.07.2020, 11:32
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 13.09.2005
Beiträge: 83
Iago2 befindet sich auf einem aufstrebenden Ast
Standard PHP / OOP Vererbung, Konstructor, error!!

Hi folks,

Ich hab hier eine UserList-Klasse, die von User erbt. Ich übergebe ein Datenbank-Objekt an den Konstruktor, kann das Objekt in UserList aber nicht aufrufen und prepare andwenden: (ERROR: Call to a member function prepare() on null in)

Wo liegt der Fehler? Thank you very very much!!

PHP-Code:
class User  {

    private 
$userId;
    private 
$userName;
    private 
$language;
    private 
$db;
    private 
$date;
    

  public function 
__construct($db) {

    
$this->db $db;
    
$this->userId $_SESSION['id'];
    

 }

... 
uswusf...

}

class 
UserList extends User {


    public function 
__construct($db) {

    
parent::__construct($db);


 }

 public function 
fetchUsersData() {
        
//returns username + language ---> actions.php for AJAX request
        //the current user is NOT included int the query

        
$stmt $this->db->prepare("SELECT `id`,`username`,`lang` 
                                    FROM user
                                    WHERE id != ?"
);

         
$stmt->execute([$this->userId]);
       while(
$row $stmt->fetch(PDO::FETCH_ASSOC)) {

            
$usersList[] = $row;
       }

       return 
$usersList;
 }

PHP-Code:
$db = new Database();

$userList = new UserList($db);
                  
print_r($userList->fetchUsersData()); 

Geändert von Iago2 (07.07.2020 um 11:35 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 08.07.2020, 10:58
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 13.09.2005
Beiträge: 83
Iago2 befindet sich auf einem aufstrebenden Ast
Standard

Ja. mit protected läufts besser:

Code:
class User  {

	protected $userId;
	protected $userName;
	protected $language;
	protected $db;
	protected $date;
	protected $png100Path;

.....
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 08.07.2020, 12:28
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.979
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Nur ein Denkanstoss.

Wieso ist eine Liste ein User? Sollte eine UserListe nicht (ein Array) User haben (has)?

Auch das der User eine Datenbank hat ist vom OO Aspekt fragwürdig. Das Objekt User braucht keine Datenbank.

(Und ich schreibe das, weil ich selbst genau diese Fehler in meinen alten Programmen zu Hauf finde)
Mit Zitat antworten
  #4 (permalink)  
Alt 09.07.2020, 09:31
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 13.09.2005
Beiträge: 83
Iago2 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Nur ein Denkanstoss.

Wieso ist eine Liste ein User? Sollte eine UserListe nicht (ein Array) User haben (has)?

Auch das der User eine Datenbank hat ist vom OO Aspekt fragwürdig. Das Objekt User braucht keine Datenbank.

(Und ich schreibe das, weil ich selbst genau diese Fehler in meinen alten Programmen zu Hauf finde)
Ja, ich versteh schon. D.H. ich implementiere User allgemeiner (ähnlich einer abstrakten Klasse) und verwende dann User (als Array z.B.) in anderen Klassen, die dann verschiedene Dinge tun: erstelle eine UserList und formatieren sie soundso, richtig !?
Mit Zitat antworten
  #5 (permalink)  
Alt 09.07.2020, 09:47
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.979
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Wie gesagt ich habe selbst Code voll mit diesen Fehlern. Daher bin ich leider der falsche der dir wirklich einen Rat geben könnte.

Nach meinem Verständniss, müsste grob der User ein Datenbankmodell sein und die Aktionen (Verarbeitung) mit diesem erfolgen nur in einem Controllerobjekt. Die Liste ist ein Array von Objekten oder eine Ableitung davon. Die Darstellung übernehmen dann andere Objekte i.d.R. Views.

Aber wie gesagt ich schreibe darüber, merke aber in der Praxis die Umsetzung fällt mir seit Jahren ebenfalls schwer und ergibt sich dann oft erst im Kontext der tatsächlichen Anwendung wenn ich merke, wo meine Objekte zu Abhängig sind und ich mich wieder in eine Einbahnstrasse programmiert habe.
(Aber das ist vielleicht auch ein Teil des Spaßes des Hobbyprogrammierers )
Mit Zitat antworten
  #6 (permalink)  
Alt 09.07.2020, 11:41
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 13.09.2005
Beiträge: 83
Iago2 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Nach meinem Verständniss, müsste grob der User ein Datenbankmodell sein und die Aktionen (Verarbeitung) mit diesem erfolgen nur in einem Controllerobjekt. Die Liste ist ein Array von Objekten oder eine Ableitung davon. Die Darstellung übernehmen dann andere Objekte i.d.R. Views.
Ich hatte mal eine Java-Implementierung, ein Kartenspiel, da habe ich eben dieses Kartenspiel mit Kartenobjekten erzeugt.
(->Buch rausholen )

Genau, da habe ich die Daten im Kunstruktor des Erzeugerobjekts DeckOfCards (faces[]={"Ace","Deuce"...}, suits[]={"Hearts","Diamonds"...}, mit eine Schleife an die Kartenobjekte übergeben. new Card(faces[],suits[]);

D.H hier hab ich die Daten im Array des Konstruktors (DeckOfCards), aber genauso kann ich natürlich auch die von der Datenbank holen.

Aber natürlich benötige ich zunächst Userdaten um auf die DB zugreifen zu können, das ist komplexer als diese Java Beispiel.

Geändert von Iago2 (09.07.2020 um 11:56 Uhr)
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP, OOP und Array Übergabe laborix Serveradministration und serverseitige Scripte 35 22.12.2010 13:38
wo ist OOP für php sinnvoll? sqrack Serveradministration und serverseitige Scripte 5 12.09.2010 17:23
PHP OOP: Datenbankeintrag Klasse - ein paar theoretische Überlegungen braindead Serveradministration und serverseitige Scripte 17 24.07.2009 07:29
OOP mit PHP lernen Praktikant Ressourcen 28 05.10.2008 23:07
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:39 Uhr.