Zum Inhalt springen

PHP4 OOP Objekte mit gleicher Objekt-ID


Empfohlene Beiträge

Hallo zusammen,

folgendes script:

Klasse:


class OOMediaCategory {
function OOMediaCategory( $id = null) {
if ( $id === null) {
return;
}

$query = 'SELECT * FROM rex_file_category WHERE id = '. $id;

$sql = new sql();
// $sql->debugsql = true;
$result = $sql->get_array( $query);
$result = $result[0];

if ( count( $result) == 0 ) {
trigger_error( 'No OOMediaCategory found with id "'. $id .'"', E_USER_ERROR);
}

$this->_id = $result['id'];
$this->_parent_id = $result['re_id'];

$this->_name = $result['name'];
$this->_path = $result['path'];
$this->_hide = $result['hide'];

$this->_createdate = $result['createdate'];
$this->_updatedate = $result['updatedate'];

$this->_createuser = $result['createuser'];
$this->_updateuser = $result['updateuser'];

$this->_children = null;
$this->_files = null;
}

function &getRootCategories( $ignore_offlines = true) {
$qry = 'SELECT id FROM rex_file_category WHERE re_id = 0';
$sql = new sql();
$sql->setQuery( $qry);
$result = $sql->get_array();

$rootCats = array();
if ( is_array( $result)) {
foreach ( $result as $row) {
$id = $row['id'];
$rootCats[] =& new OOMediaCategory( $id);
}
}

return $rootCats;
}
}
[/PHP]

Aufruf:

[PHP]
$root = OOMediaCategory::getRootCategories();
var_dump($root)

Ausgabe:


object(oomediacategory)(11) {
["_id"]=>
string(1) "1"
["_parent_id"]=>
string(1) "0"
["_name"]=>
string(4) "test"
["_path"]=>
string(1) "|"
["_hide"]=>
string(1) "0"
["_createdate"]=>
string(10) "1117215439"
["_updatedate"]=>
string(10) "1117215439"
["_createuser"]=>
string(3) "jan"
["_updateuser"]=>
string(3) "jan"
["_children"]=>
NULL
["_files"]=>
NULL
}
object(oomediacategory)(11) {
["_id"]=>
string(1) "2"
["_parent_id"]=>
string(1) "0"
["_name"]=>
string(6) "mytest"
["_path"]=>
string(1) "|"
["_hide"]=>
string(1) "0"
["_createdate"]=>
string(10) "1117215446"
["_updatedate"]=>
string(10) "1117215446"
["_createuser"]=>
string(3) "jan"
["_updateuser"]=>
string(3) "jan"
["_children"]=>
NULL
["_files"]=>
NULL
}
[/PHP]

Wie kann es sein, dass mir PHP 2 Objekte mit der gleichen Objekt ID anlegt?

Die beiden Objekte haben ja unterschiedliche Attribute, aber warum die gleiche Objekt-ID?

Ich habe bereits versucht das ganze ohne Referenzen zu machen, aber das Problem bleibt bestehen.

Aufgrund dieses Phänomens habe ich Probleme im weiteren Ablauf meines Scripts...

Weiss jemand rat?

Gruß,

Markus

PS:

Windows XP (neuster Patchlevel)

XAMP 1.4.11

+ Apache 2.0.52

+ MySQL 4.1.8

+ PHP 5.0.3 + PHP 4.3.10 + PEAR

+ PHP-Switch win32 1.0 (von Apachefriends, man nehme die "php-switch.bat")

+ XAMPP Security 1.0

+ MiniPerl 5.8.3

+ SQLite 2.8.15

+ OpenSSL 0.9.7e

+ PHPMyAdmin 2.6.0 pl3

+ ADODB 4.54

+ Mercury Mail Transport System for Win32 and NetWare Systems v4.01a

+ FileZilla FTP Server 0.9.4d

+ Webalizer 2.01-10

+ Zend Optimizer 2.5.7

Dump der MySQL Tabelle:

[code] INSERT INTO `rex_file_category` VALUES (1, 'test', 0, '|', 0, 1117215439, 1117215439, 'jan', 'jan'); INSERT INTO `rex_file_category` VALUES (2, 'mytest', 0, '|', 0, 1117215446, 1117215446, 'jan', 'jan'); [/code]

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich versuche gerade hinter den Sinn der ObjectID zu kommen, wo ist denn dokumentiert das da in den () die ObjectID steht ? ^^

soweit ich das sehe benutzt du einen SQL-Primärschlüssel um die Objekte einzulesen, warum verwendest du den nicht weiter ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich versuche gerade hinter den Sinn der ObjectID zu kommen, wo ist denn dokumentiert das da in den () die ObjectID steht ? ^^

soweit ich das sehe benutzt du einen SQL-Primärschlüssel um die Objekte einzulesen, warum verwendest du den nicht weiter ?

hmm :cool:

Wo bitte steht denn da eine Objekt-ID? Meines Erachtens gibt var_dump die Grösse (in diesem Fall die Anzahl der Attribute an: also in diesem Fall 11).

Ich glaub ich hab das ganze missinterpretiert und den Fehler an der falschen Stelle gesucht....

Danke für den Hinweis.

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

Vieleicht kannst du es ja für Später mal gebrauchen.

Eine eindeutige ObjektID gibt es erst ab PHP5. Man kann sich diese über


class objektID
{
function objektID()
{
//Gibt id ID eines Objektes aus
echo $this;
}
}

$id = new objektID();

[/PHP]

ausgeben lassen.

Mfg Akkie

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

danke für den Hinweis, aber das wusste ich bereits :)

Ich hab übrigens den Fehler dann weiter unten im Script gefunden.

Es gab ein Problem, wenn man ein Array mit foreach durchläuft und den "value" diese foreach dann per Referenz in ein neues Objekt anlegen möchte.

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...