php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.09.2009, 10:28  
den
Neuer Benutzer
 
Registriert seit: 23.11.2008
Beiträge: 16
den befindet sich auf einem aufstrebenden Ast
Standard Array in spezivisches Object umwandeln

Hallo

Irgendwie kann ich mir nicht vorstellen das es dafür keine von PHP vorgegebene Lösung gibt:

Ich will ein
PHP-Code:
$obj = (object) $array
machen, dabei soll das Object aber nicht eine stdClass werden, sondern eine von mir definierte Classe haben. Gibt es da keine Möglichkeit als eine eigene Funktion in den Code auf zu nehmen?

Danke schon mal für jeden Tipp.

Den
den ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.09.2009, 11:00  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Vorgefertigt wüßte ich grad keine Lösung, würds aber evtl. so machen,
wenn ich Dich richtig verstanden habe:
PHP-Code:
function convert_to_object($src=array()) {
  
$obj=false;

  if(!empty(
$src))
    foreach (
$src as $key => $val$obj->{$key} = $val;

  return 
$obj;

UNGETESTET!
Arne Drews ist offline  
Alt 19.09.2009, 11:37  
den
Neuer Benutzer
 
Registriert seit: 23.11.2008
Beiträge: 16
den befindet sich auf einem aufstrebenden Ast
Standard

Nicht ganz. Deine Funktion ist identisch mit dem cast nach object: Ich kann keine Classe angeben.

Momentan verwende ich diese Function:
PHP-Code:
/** Improved $obj = (object) $array;
 * @param Array $data
 * @param String $class Name of the class to use
 * @return Object The object
 */
function array2object(Array $data$class 'stdClass'){
    
$object = new $class();
    foreach(
$data as $key => $value$object->$key $value;
    return 
$object;

Aber etwas wie ein simples $obj = (object) $array; währe halt schon viel mehr sexy...
den ist offline  
Alt 19.09.2009, 12:51  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Wenn es keine stdClass werden soll, kannst du dir ein Container Objekt mit setter/getter Methoden basteln. Dabei zb. __set verwenden. Vielleicht gefällt dir in dem Zusammenhand der spl array iterator grüße
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist gerade online  
Alt 22.09.2009, 20:01  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Viel akuter finde ich das Problem bei einer „Deserialisierung“ eines JSON-Strings. Dass da ein stdclass rausfällt ist echt ärgerlich, wäre das doch sonst ein tolles Interface zwischen PHP und Javascript. Ist mir neulich mal so aufgefallen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 22.09.2009, 22:18  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ist doch kein Aufwand alle enstandenen stdClass-Objekte an die Zielklasse deiner Wahl weiterzuleiten.
Dass (object)$array nicht geht ist doch logisch, wo sollen die Werte auch landen? Public Properties benutzt eh keiner, also bleiben nurnoch setter-Methoden, aber woher soll die der Cast-Operator kennen? Es steht dir frei für deine Klassen ein Interface zu schreiben, dass eine Methode für den Import eines Arrays vorgibt (fromArray()).
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online  
Alt 23.09.2009, 17:00  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.020
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

@Chriz

Doch doch, public Properties nutzen ganz viele Leute. So ziemlich alle, die keine Ausbildung im Bereich Software Development haben oder noch nie ein Projekt mit mehr als einem Programmierer hatten.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline  
Alt 28.09.2009, 14:21  
den
Neuer Benutzer
 
Registriert seit: 23.11.2008
Beiträge: 16
den befindet sich auf einem aufstrebenden Ast
Standard

Das es da noch diverse Möglichkeiten gibt das sauber auf zu bauen ist klar. In kleinen Scripten bevorzuge ich halt einfach Einzeiler gegenüber komplexen Classen...
den ist offline  
Alt 28.09.2009, 14:26  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Klassen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 28.09.2009, 14:31  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Einzeiler würde bedeuten, daß es so eine Funktion bereits gibt,
oder eine Klasse existiert, deren Methode Du aufrufen kannst.

Das Erste ist ja bereits geklärt: gibts (noch) nicht.
Das zweite ist imho kein klassischer "Einzeiler".

Das Beste wäre wohl, Du entwicklelst Dir eine Funktion oder besser eine Klasse dafür...

@nikosch:
...oder Classes
Arne Drews ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Tabellen die sich selbst referenzieren Squall PHP Tipps 2009 19 04.08.2009 21:33
Array umwandeln heykey PHP Tipps 2009 4 31.07.2009 09:09
[Erledigt] Object + Array + Object ausgeben Roflkid PHP-Fortgeschrittene 3 17.05.2009 17:28
Array umwandeln von zwei zu mehrdimensional erselbst PHP Tipps 2009 6 02.04.2009 23:30
Persistence Framework #Avedo Software-Design 37 28.03.2009 17:32
Array mit implode in String umwandeln franc PHP Tipps 2008 14 21.12.2008 18:05
XAMP gehts, auf realer server nicht: Fehler: Cannot use object of type ... as array mysteryxxx PHP-Fortgeschrittene 4 03.08.2008 18:08
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array to object, array to object php, php array in object umwandeln, arrayobject in array umwandeln, array in objekt umwandeln php, php array in objekt umwandeln, array in object, array in object umwandeln, cannot use object of type stdclass as array php wert aus objetkt direkt in ein array, array in object array umwandeln, php klasse fehler function array cannot use object of type stdclass as array, undefined property: stdclass:: array2object, php umwandlung array in objekt, $obj    = (object) $array;, array as object php, php array in objekt verwandeln, array als object zurückgeben php, codeigniter doctrine, array in object php, php objekt klasse zu array umwandeln

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum