php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.11.2008, 21:39  
Neuer Benutzer
 
Registriert seit: 24.11.2008
Beiträge: 4
badrandolph befindet sich auf einem aufstrebenden Ast
Standard Objekte: Next() durch foreach() erstetzt - Object of type variant did not create...

Hallo,

derzeit versuche ich über PHP WMI-Daten auszulesen. Dafür habe ich eine Funktion gefunden. Die ist aber scheinbar veraltet:

PHP-Code:
$arrProp $objProp->Next($objProp->Count); 
Das geht wohl seit PHP5 nicht mehr. Ich solle es doch durch foreach() ersetzen. Das habe ich jetzt auch gemacht, doch leider bekomme ich jetzt einen Fehler dieser Art:

PHP-Code:
Object of type variant did not create an Iterator 
So sieht der besagte Teil der Funktion jetzt aus (schon bearbeitet, mit Kommentaren versehen):

PHP-Code:
  function getWMI($strClass,$strHostname$strUser$strPassword)
  {
    
$objLocator = new COM("WbemScripting.SWbemLocator");
    if(
$strHostname == "")
    {
      
$objService $objLocator->ConnectServer();
    }
    else
    {
      
$objService $objLocator->ConnectServer($strHostname"rootcimv2""$strHostname\\$strUser"$strPassword);
    }
    
// ------------------------Ab hier gehts los
    
$objWEBM $objService->Get($strClass);
    
$objProp $objWEBM->Properties_;

    
//$arrProp = $objProp->Next($objProp->Count);    // So sah das früher aus, scheinbar nur für php 4

    
foreach($objProp AS $arrProp)  // foreach von mir eingefügt
    
{
      
$objWEBMCol $objWEBM->Instances_();

      
//$arrWEBMCol = $objWEBMCol->Next($objWEBMCol->Count);   // So sah das früher aus, scheinbar nur für php 4
      
foreach($objWEBMCol AS $arrWEBMCol)   // foreach von mir eingefügt
      
{
        foreach(
$arrWEBMCol as $objItem)
        {
          
reset($arrProp);
          
$arrInstance = array();
          foreach(
$arrProp as $propItem)
          {
            eval(
"\$value = \$objItem->" .$propItem->Name .";");
            
$arrInstance[$propItem->Name] = trim($value);
          }
          
$arrData[] = $arrInstance;
        }
      }
    }
    return 
$arrData;
  } 
Doch jetzt sind meine Kenntnisse über Objekte leider schon am Ende. Ich weiß nicht was das für ein Fehler ist und wie man ihn behebt. Könnt ihr mir vielleicht helfen? Vielen Dank schonmal
badrandolph ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.11.2008, 21:44  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
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

Next ist in diesem Fall wohl nur eine Methode. Warum genau hast Du statt dessen foreach benutzt? ->Next() und while() führt in diesem Fall doch zum selben Ergebnis.
__________________
--
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 offline  
Alt 24.11.2008, 22:27  
Neuer Benutzer
 
Registriert seit: 24.11.2008
Beiträge: 4
badrandolph befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

danke schonmal für deine Antwort.

Wenn ich das Next() benutze bekomme ich folgenden Fehler:

Fatal error: Call to undefined method variant::Next()

Ich habe gelesen dass es Next() seit PHP 5 nicht mehr gibt, und dass man es durch foreach() ersetzen soll.

Mfg
badrandolph ist offline  
Alt 24.11.2008, 22:28  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

WO hast Du das denn gelesen?
David ist offline  
Alt 24.11.2008, 22:48  
Neuer Benutzer
 
Registriert seit: 24.11.2008
Beiträge: 4
badrandolph befindet sich auf einem aufstrebenden Ast
Standard

OK, ich hab gerade nochmal nachgelesen, dort steht (auf Englisch), dass foreach der von Zend -->empfohlene<-- Weg ist. Tut mir leid, da hab ich mich verlesen.

Trotzdem funktioniert die Funktion mit dem Next() nicht. Was könnte ich noch ausprobieren?

Mfg
badrandolph ist offline  
Alt 24.11.2008, 23:29  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du könntest dich mal mit SPL Iterator beschäftigen.
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline  
Alt 25.11.2008, 07:45  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
function getWMI($strClass,$strHostname, $strUser, $strPassword)
Mit welchen Parametern hast Du die Funktion aufgerufen?
David ist offline  
Alt 26.11.2008, 19:14  
Neuer Benutzer
 
Registriert seit: 24.11.2008
Beiträge: 4
badrandolph befindet sich auf einem aufstrebenden Ast
Standard

@ David

getWMI("Win32_OperatingSystem", $dbIpAddress, $dbAdminUsername, $dbAdminPassword);

$dbIpAddress = IP-Adresse des Ziel-Computers
$dbAdminUsername = Administrator Benutzername des Zielcomputers (also "Administrator")
$dbAdminPassword = Passwort für Administrator

@phpdummi

Auf der Seite zu SPL der php-Manual sind ca. 150 Funktionen aufgelistet, davon sind so gut wie alle nicht Dokumentiert und es gibt keine Einführung. Falls du etwas weißt wäre es nett wenn dus mir sagen würdest, denn über Google kann ich zu meinem Fehler nichts finden.

Mfg
badrandolph 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
Wireshark SSL Handshake debugging-Handshake protokoll mittels PHP + Curl brian johnson Off-Topic Diskussionen 0 06.11.2008 11:54
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
Problem mit Wasserzeichen auf Bildern pixelcut PHP-Fortgeschrittene 16 14.12.2004 02:36
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php foreach object, php object foreach, php foreach next, foreach object php, php objekte foreach, object of type variant did not create an iterator, php foreach objekte, call to undefined method variant::next(), php objekt foreach, php variant object, php object next, php foreach objects, foreach objekt php, foreach next php, fatal error: call to undefined method variant::next(), php variant, php foreach objekt, \'object of type variant did not create an iterator\', foreach objekte php, foreach php object

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:28 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