Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Frage zu PDO Fetch Class
Antwort
 
Themen-Optionen
Alt 17.02.2007, 09:29   Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 274
Standard Frage zu PDO Fetch Class

Morgen Miteinander.

Ich benutze PDO. Ich selektiere meine Daten und fetche dann alles in ein neues Objekt mit PDO :: FETCH_CLASS (Newspost ResultSet in ein Newspost Object, etc.)

Jetzt ist es aber so das PDO einfach hingeht und verpasst meinem Objekt die gefetchten Daten als Public Variablen, was ich nicht will.

Auf einem anderen Server (muss) ich MDB2 nehmen. Hiermit mache ich das ähnlich (MDB2_FETCHMODE_OBJECT) und alle Werte aus dem ResultSet sind als Parameter im Objekt Konstruktor verfügbar. Im Konstruktor weise ich dann die selektierten Daten meinem Objekt zu wie ich es will beispielsweise, alle private oder stringmäßig manipuliert.

Also kann PDO die Daten genauso fetchen wie MDB2

EDIT: Oh ich seh grade bei dem PDO Fetch kann man die Klassenvariablen auf private stellen und PDO füllt sie trotzdem

Geändert von ex³ (17.02.2007 um 09:32 Uhr).
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.02.2007, 11:24   Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
Standard

Wird denn __set() angesprochen, wenn die Attribute privat sind? Falls ja, kannst du dir ja eine Basis-Klasse bauen, die bei __set() nach einer Methode sucht, die die Werte bei der Eingabe umschreibt und bei __get() nach einer, die die Werte eben vor der Ausgabe umschreibt, oder ev. auch eine Exception wirft, wenn keine Methode, wie getName(), getsize() etc. existiert.

Andernfalls halt einen Decorator bauen, dem du das Daten-Objekt einpflanzt (ist das dann noch ein Dekorierer, wenn öffentliche Attribute versteckt werden?).

Basti

PS:
Nein, Dekorierer verändern die Schnittstelle nicht. Dann eben ein Adapter…

Geändert von Basti (17.02.2007 um 11:30 Uhr).
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.02.2007, 16:24   Nach oben    #3
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 274
Standard

Ich hab die Attribute meiner Klasse mal auf private gestellt. PDO füllt meine Klassenvariablen weiterhin.

Aber mal einer andere Frage. Wie macht das PDO? Wie erstellt PDO ein Objekt meiner Klasse und füllt dabei die private Variablen. Schließlich sind die ja private und der Konstruktor macht garnichts.
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.02.2007, 17:14   Nach oben    #4
Erfahrener Benutzer
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
Standard

Ah, ich dachte, du willst die Daten beim "Reinkopieren" ins Objekt noch manipulieren.

Und, wie PDO das macht? Keine Ahnung, schau doch mal in den Quellcode.

Du kannst sowas aber ach mit PHP "hintricksen":
PHP-Code:
<?php

class Foo
{
    private 
$iTest 1;
}

$Bar unserialize("O:3:\"Foo\":1:{s:10:\"\0Foo\0iTest\";i:9;}");
var_dump($Bar);
Code:
object(Foo)[2]
  private 'iTest' => 9

Grad beim Rumprobieren auf ein sehr suspektes Verhalten gestoßen:
PHP-Code:
<?php

class Foo
{
    private 
$iTest  1;
}

$Foo unserialize('O:3:"Foo":1:{s:5:"iTest";i:42;}');
var_dump($Foo);
var_dump(isset($Foo->iTest));

$Foo unserialize('O:3:"Foo":1:{s:5:".....";i:42;}');
var_dump($Foo);
Code:
object(Foo)[1]
  private 'iTest' => 1
  public 'iTest' => 42

false

object(Foo)[2]
  private 'iTest' => 1
  public '.....' => 42
...völlig crazy, was PHP da macht! Attribute werden doppelt definiert und dazu sogar mit völlig unzulässigen Bezeichnern ($.....).

(Version 5.2.0)

Basti

Geändert von Basti (17.02.2007 um 17:36 Uhr).
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.02.2007, 17:46   Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von dejan_spasic
 
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 169
Standard

Zitat:
Zitat von Basti Beitrag anzeigen
Grad beim Rumprobieren auf ein sehr suspektes Verhalten gestoßen:
PHP-Code:
<?php

class Foo
{
    private 
$iTest  1;
}

$Foo unserialize('O:3:"Foo":1:{s:5:"iTest";i:42;}');
var_dump($Foo);
var_dump(isset($Foo->iTest));

$Foo unserialize('O:3:"Foo":1:{s:5:".....";i:42;}');
var_dump($Foo);
Code:
object(Foo)[1]
  private 'iTest' => 1
  public 'iTest' => 42

false

object(Foo)[2]
  private 'iTest' => 1
  public '.....' => 42
...völlig crazy, was PHP da macht! Attribute werden doppelt definiert und dazu sogar mit völlig unzulässigen Bezeichnern ($.....).

(Version 5.2.0)

Basti
__________________
Da wir alle in einem Boot sitzen, ist es gut, dass wir nicht alle auf einer Seite stehen... (mir unbekannt)
dejan_spasic ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

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
PDO vs MDB2 ex³ PEAR, PECL und Frameworks 1 30.07.2007 12:47
Class 'xyz' not found in, Probleme mit dem include_path? Ben PHP-Programmierung 5 02.06.2006 16:44
SQLSTATE - Wie kommt PDO da dran? Lars Datenbanken 6 30.01.2006 14:20
NOOB FRAGE: Fenster bei Buttondruck Muluf Allgemeine Java-Programmierung 2 21.06.2005 15:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:38 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44