5. Juni 200520 j 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]
6. Juni 200520 j 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 ?
6. Juni 200520 j 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).
6. Juni 200520 j 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
7. Juni 200520 j 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
8. Juni 200520 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.