| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

06-04-2009, 11:26
|
|
rundmc
Registrierter Benutzer
|
|
Registriert seit: Jul 2007
Beiträge: 36
|
|
Object ohne Klasse
Hallo Leute,
Ist es möglich ein Object ohne ein Klasse zu erstellen?
zb.:
PHP-Code:
$test = {'test1', 'test2'}
echo $test->test1 = 'hallo';
wäre sowas irgendwie möglich?
danke, mfg tom
|

06-04-2009, 11:31
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
PHP-Code:
<?php
$object;
$object->hello = 'world';
var_dump($object);
?>
Ist in Wirklichkeit aber, wie man sehen kann, eine Objektinstanz der PHP internen Klasse "stdClass".
|

06-04-2009, 12:00
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Re: Object ohne Klasse
Zitat:
Original geschrieben von rundmc
Hallo Leute,
Ist es möglich ein Object ohne ein Klasse zu erstellen?
|
Was willst du damit erreichen?
Eine Klasse ist quasi die Bauanleitung für Objekte. Wie soll dir PHP ein Objekt "bauen", wenn es keine Anleitung dafür besitzt?
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
|

06-04-2009, 12:16
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Es gibt halt auch anonyme Objekte ... Ohne "Bauanleitung", weil nichts gebaut werden muss. Diese Objekte haben dann natürlich weder irgendwelche Methoden noch private oder protected Properties.
|

06-04-2009, 13:43
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Original geschrieben von unset
Es gibt halt auch anonyme Objekte ... Ohne "Bauanleitung", weil nichts gebaut werden muss. Diese Objekte haben dann natürlich weder irgendwelche Methoden noch private oder protected Properties.
|
Und natürlich auch keinen Nutzen: Ein Objekt ohne Methoden und ohne Eigenschaften -- welchen konkreten Zweck könnte das schon erfüllen?
Auch "public properties" müssen (oder sollten) definiert werden.
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
|

06-04-2009, 13:57
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
In JavaScript oder ActionScript kann ich sowas ja noch nachvollziehen, aber für sowas gibt es in PHP assoziative Arrays.
|

06-04-2009, 14:27
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Naja, json_decode gibt per default auch ein anonymes Objekt zurück. Halte ich weder für unsauber noch für schlimm.
|

06-04-2009, 16:06
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Schlimm finde ich das auch nicht. Aber warum sollte man sowas per Hand erzeugen? Halte ich für weniger sinnvoll, wie in Sprachen, die nativ über keine Hashmap verfügen.
|

07-04-2009, 17:57
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
PHP-Code:
$test = (object) array('test1'=>'bli', 'test2'=>'bla');
$test->test1 = 'hallo';
echo $test->test1 . '<br>';
echo $test->test2 . '<br>';
mysql_fetch_object() macht auch nix anderes....
Geändert von combie (07-04-2009 um 17:59 Uhr)
|

07-04-2009, 22:13
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
So langsam wissen wir, dass es geht ^^ Aber wieso sollte man das so wollen? Nur weil der Pfeil viel hübscher ist wie der Index-Zugriff? Ist der Zugriff schneller? Gib mir einen Grund...
|

07-04-2009, 22:23
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Wenn man schon objektorientiert Programmiert, kann man halt eben auch Objekte verwenden statt Arrays. Asoziatve Arrays sind sowieso so ein PHP-Luxus der in vielen anderen Sprachen gar nicht gegeben ist.
|

07-04-2009, 23:39
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Original geschrieben von unset
[B]Wenn man schon objektorientiert Programmiert, kann man halt eben auch Objekte verwenden statt Arrays.
|
Eine sauber implementierte Array-Klasse wäre schon nicht schlecht. Aber das gilt ja auch für Strings in PHP -- und da kommt auch fast niemand auf die Idee, die eingebauten Strings durch eine objektorientierte Lösung zu ersetzen.
PHP-Code:
// Was sieht cooler aus?
strlen($string);
$string->size();
// letzteres würde auch die Unicode-Verrenkungen in PHP6 unnötig machen ...
Zitat:
|
Asoziatve Arrays sind sowieso so ein PHP-Luxus der in vielen anderen Sprachen gar nicht gegeben ist.
|
Ja, und Objekte sind auch ein Luxus, der in vielen anderen Sprachen nicht gegeben ist -- man denke nur an C, Pascal, die meisten Assembler ...
Ernsthaft: Die meisten Scriptsprachen[1] kennen einen zusammengesetzen Datentyp, der mit PHP's Arrays (auch den assoziativen) konkurrieren kann.
Und im Gegensatz zu Objekt-Properties ist die Zeichenmenge in Array-Keys nicht auf "/[a-z][a-z0-9_]*/i" beschränkt.
--
[1] VBScript könnte da eine Ausnahme sein. Da gibts assoziative Arrays (glaube ich) nur über ein extra einzubindendes Objekt.
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
|

07-04-2009, 23:39
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Wenn man schon Objektorientiert programmiert, sollten solche Parameteranhäufungen auch korrekt in einer Klasse beschrieben werden. Oder wenigstens eine eigene Collection-Klasse, a la ArrayObject oder was eigenes. Aber ein anonymes Objekt zu verwenden, weil das ganze objektorientierte und nicht arrayorientierte Programmierung heißt, ist kein Argument.
|

08-04-2009, 03:44
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
Zitat:
Original geschrieben von fireweasel
Eine sauber implementierte Array-Klasse wäre schon nicht schlecht. Aber das gilt ja auch für Strings in PHP -- und da kommt auch fast niemand auf die Idee, die eingebauten Strings durch eine objektorientierte Lösung zu ersetzen.
|
Mit ArrayObject innerhalb der SPL gibt es eine sauber implementierte Array-Klasse in PHP.
Meinetwegen können wir das Pferd auch gerne von hinten aufsatteln: Was spricht gegen die Verwendung von anonymen Objekten? "Sollte man nicht weil [sonst geschieht das Ungeheure]" zählt hier doch genau so wenig als Argument.
Bei einem endlichen Haufen von (assoziativen) Daten, der ansonsten weder näher beschrieben werden muss und auch keine auf ihn anzuwendenen Operationen nötig macht, ist ein solches anonymes Objekt eben die Wahl, IMHO
Im Grunde habe ich meine abschließende Meinung dazu aber auch schon gebloggt: Da gibt es kein richtig oder falsch.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|