2012-11-02 5 views
5

Ich entdecke gerade diese Funktionen scheint überflüssig. http_build_query() gehören zu Standard-PHP-Funktionen. http_build_str() ist Teil des Pakets pecl_http.Was ist der Unterschied zwischen http_build_str() und http_build_query()?

Sind sie 100% redundant?

Ich konzentriere mich auf die perfekte Umkehrfunktion von parse_str(). seit http_build query() ist kaputt. (siehe reference) Ich frage mich, ob es einen Weg gibt, http_build_str() könnte einen Vorteil haben, mehr Randfälle zu unterstützen/tolerieren.

+5

Warum liest du nicht einfach die API? – thatidiotguy

+1

Weil build_query in PHP 5 eingeführt wurde. Es gibt keinen Grund, die pecl-Version zu installieren, es sei denn, Sie sind auf einer alten PHP-Version und/oder versuchen, eine PHP4-Codebase in eine php5-Installation zu schieben. –

+0

Danke @MarcB, du bringst den ersten wertvollen Input ;-) Ich habe auch meine Frage aktualisiert um genauer zu sein –

Antwort

6

Durch das Lesen der API scheint es, dass http_build_str() URL nicht die Parameter codiert, während http_build_query() tut.

http_build_str() kann auch entweder ein Objekt oder ein Objekt als primäres Argument nehmen, während http_build_query() nur ein Array übernimmt.

+0

Entschuldigung, ich war zu vage und habe meine Frage mit mehr Details aktualisiert. –

+0

@lenzai Aufgrund der Art und Weise, wie sich PHP entwickelte, ist es mit Funktionen gespickt, die einen doppelten Zweck haben. Es war schwierig, größere Revisionen zu machen und das Zeug rückwärtskompatibel zu lassen, so dass die Sprache mit Verweisen auf alte Erweiterungen übersät ist, die wirklich nicht mehr benötigt werden, wenn Sie die aktualisierten Versionen der Kernsprache verwenden. – thatidiotguy

+0

2 doppelte Funktionen für einen ähnlichen Zweck aus historischen Gründen ist ärgerlich, macht aber sens. Noch keine von ihnen ist eine perfekte Umkehrung von parse_str :( –

2

In gewissem Umfang redundant. Aber, wenn Sie mit der PHP-Dokumentation beziehen, sollten Sie deutliche Unterschiede sehen:

http://php.net/manual/en/function.http-build-query.php

http://php.net/manual/en/function.http-build-str.php

In allerwenigsten, sollten Sie diese http_build_query sehen() ist Kern PHP und unterstützt eine zusätzlicher Codierungsstil-Parameter Und Sie sollten sehen, dass http_build_str() eine PECL-Erweiterung ist.

+0

Ja, ich sehe das. Aber was ist der Sinn von 2 Funktion. Neben der "offiziellen Umkehrung von' parse_str' (eine eingebaute PHP-Funktion) ist nicht 'http_build_query' (eine andere builtin PHP - Funktion) aber 'http_build_str' (eine externe PECL - Erweiterung). Ist das nicht verwirrend? Wie macht man das Sinn und wählt weise zwischen den 2? –

+1

Nein. Die [parse_string] (http://www.php.net /manual/en/function.parse-str.php) Dokumentation bezieht sich/Links zu http_build_query(), NICHT die pecl-Erweiterung! Also, wenn es eine "offizielle" Inverse gibt, ist es NICHT die pecl-Funktion. Und wie oben erwähnt , die pecl-Version wurde unzweifelhaft erstellt, bevor http_build_query() in den Kern von PHP integriert wurde. – svidgen

+0

Sie haben recht. Ich war verwirrt, dass 'http_build_Str()' behauptet, die Umkehrung von 'parse_str()' zu sein, während 'http_build_query () 'nicht. –

Verwandte Themen