2012-11-02 16 views
5

Ho appena scoperto che queste funzioni sembrano ridondanti. http_build_query() appartiene alle funzioni php standard. http_build_str() fa parte del pacchetto pecl_http.Qual è la differenza tra http_build_str() e http_build_query()?

sono ridondanti al 100%?

Sono concentrato sull'ottenere la perfetta funzione di inversione di parse_str(). dal http_build query() è rotto. (vedi reference) Mi chiedo se ci sia un modo in cui http_build_str() potrebbe avere qualche vantaggio per supportare/tollerare più casi limite.

+5

Perché non leggi l'API? – thatidiotguy

+1

Perché build_query è stato introdotto in PHP 5. Non c'è motivo di avere la versione pecl installata a meno che tu non sia su una vecchia versione di PHP, e/o stia provando a inserire una php4 codebase in un'installazione php5. –

+0

Grazie a @MarcB, hai apportato il primo input prezioso ;-) Ho anche aggiornato la mia domanda per essere più specifico –

risposta

6

Leggendo l'API, sembra che http_build_str() non codifichi l'URL dei parametri, mentre lo fa http_build_query().

http_build_str() può anche prendere un oggetto O un oggetto come argomento principale, mentre http_build_query() accetta solo un array.

+0

scusate, ero troppo vago e ho aggiornato la mia domanda con ulteriori dettagli. –

+0

@lenzai A causa del modo in cui PHP si è evoluto, è pieno di funzioni che hanno uno scopo duplice. È stato difficile eseguire revisioni importanti e lasciare le cose all'indietro in modo compatibile, quindi il linguaggio è pieno di riferimenti a estensioni obsolete che non sono più necessarie se si utilizzano le versioni aggiornate del linguaggio principale. – thatidiotguy

+0

2 funzioni duplicate per scopi simili per ragioni storiche sono fastidiose ma rendono sensate. Ancora nessuno di questi è un perfetto rovescio di parse_str :( –

2

Ridondante in misura. Ma, se si fa riferimento alla documentazione di PHP, si dovrebbe vedere le differenze distinte:

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

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

In meno, si dovrebbe vedere che http_build_query() è core di PHP e supporta un parametro di stile di codifica aggiuntivo. E dovresti vedere che http_build_str() è un'estensione PECL.

+0

Sì, lo vedo, ma che senso ha avere la funzione 2. Oltre al "reverse ufficiale di' parse_str' (una funzione di php integrata) non è 'http_build_query' (un altro built-in funzione php) ma 'http_build_str' (un'estensione PECL esterna) Non è confuso? Come renderlo sensato e saggiamente scelto tra il 2? –

+1

No. The [parse_string] (http://www.php.net /manual/en/function.parse-str.php) documentazione si riferisce/link a http_build_query(), NON l'estensione pecl! Quindi, se c'è un inverso "ufficiale", NON è la funzione pecl. E come detto sopra , la versione pecl è stata appena creata prima che http_build_query() fosse integrata nel core PHP – svidgen

+0

hai ragione, sono confuso dal fatto che 'http_build_Str()' afferma di essere il contrario di 'parse_str()' considerando 'http_build_query () 'no. –

Problemi correlati