2016-05-20 39 views
0

Ich habe eine Funktion auf einer PHP-Seite, die das Erstellungsdatum/die -zeit von Videodateien mit getid3 erfassen soll. Ich dachte, alles funktionierte gut und war bereit, diese Version ins Bett zu bringen, als ich (natürlich) alles noch einmal laufen ließ, um sicher zu sein, und endete mit einem Problem, das ich einfach nicht herausfinden kann.Objekteigenschaft wird nicht angezeigt

Das entsprechende Stück Code ist dies:

$getID3 = new getID3; 
$ThisFileInfo = $getID3->analyze($file); 
if ($ThisFileInfo["quicktime"]["moov"]["subatoms"][0]["creation_time_unix"]){ 
    $createdate = new DateTime("@".strval($ThisFileInfo["quicktime"]["moov"]["subatoms"][0]["creation_time_unix"])); 
} 
else { 
    $createdate = new DateTime("@".strval($ThisFileInfo["quicktime"]["moov"]["subatoms"][0]["modify_time_unix"])); 
} 
$createdate->setTimeZone(new DateTimeZone('America/New_York')); 
//var_dump($createdate); 
$createdate = $createdate->date; 

Wenn ich eine Datei mit diesem Teil verarbeiten erhalte ich eine Fehlermeldung, Notice: Undefined property: DateTime::$date in … line 179 (Dateipfad von mir entfernt). Allerdings weiß ich, dass dies nicht der Fall ist, denn wenn ich die var_dump Zeile oben kommentieren, bekomme ich die Ausgabe object(DateTime)#3 (3) { ["date"]=> string(26) "2016-01-24 15:20:32.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "America/New_York" }.

Es sieht sicherlich wie das DateTime-Objekt $createdate hat eine Eigenschaft namens $date, so bin ich mir nicht sicher, was vor sich geht, obwohl ich nehme an, es ist etwas in meiner Syntax. Kann mir jemand helfen, das zu klären?

+0

http://stackoverflow.com/questions/14084222/why-cant-i-access-datetime-date-in-phps-datetime-class-is-it-a-bug TLDR '$ createdate-> format ('Ymd H: i: s'); ' – Steve

Antwort

0

Wenn Sie nicht sicher sind, auf welche Variablen von Ihrem aktuellen Bereich eines Objekts aus zugegriffen werden kann, können Sie get_class_vars() verwenden.

es auf einem DateTime- Objekt Verwenden gibt eine leere Array:

var_dump(get_class_vars(get_class($datetimeobj))); 

... das heißt die Eigenschaft $date privaten ist. Natürlich können Sie die String-Darstellung des Objekts zugreifen Datetime mit der date_format() Methode:

$dateString = date_format($dateTimeObj, 'Y-m-d H:i:s'); 

Sie mehr über das Format Syntax in the "date" manual lesen können.

+0

Danke! Ich denke, das hätte lange gedauert, um es herauszufinden! – reddisht

+0

Kein Problem, überprüfen Sie auch @Steve die Antwort, es ist ein wenig einfacher Ansatz als deins. Prost! –