Ich untersuche gerade einige PHP-Codes und versuche, sie auf den neuesten Stand zu bringen. Ich habe eine Funktion gefunden, die ein Dateihandle abruft (über).Typehinting für Dateihandle als Argument in der Funktion
Der Rückkehrtyp ist stream
. Ich überprüfte es mit
$handle = fopen("myfile.csv", "r");
var_dump(get_resource_type($handle));
Wie erwähnt, scheint der Typ stream
zu sein.
Wenn ich versuche, dieses Objekt an eine Funktion zu übergeben, kann ich den Typ mit Stream nicht erzwingen.
public function parseHandle(stream $handle){}
endet mit dieser Fehlermeldung auf:
Argument 1 passed to parseHandle must be an instance of stream, resource given.
Wenn ich versuche, um die Signatur zu function parseHandle(resource $resource)
ändern es ergibt sich die folgende Fehlermeldung:
Argument 1 passed to parseHandle must be an instance of resource, resource given
Was die korrekte Datentyp ist und Wie soll ich es in den Argumenten verwenden?
Ich weiß, ich kann is_resource
in den ersten Zeilen meiner Funktion verwenden, um es zu überprüfen, aber ich frage mich immer noch.
Eine alternative Lösung könnte den Code in eine Hilfsklasse einbinden. Sie könnten diese Klasse dann als Argument übergeben. – gradosevic