Qualcuno ha realizzato un'implementazione StringBuilder
in PHP?StringBuilder per PHP
risposta
Nota:
Questa risposta è a partire dal 2010, ci potrebbe essere stringbuilders che possono migliorare le prestazioni ormai (a giudicare dai commenti qui sotto). Non ho lavorato con PHP per molto tempo quindi la mia conoscenza non è aggiornata. Questa risposta potrebbe essere obsoleta.
Perché si desidera utilizzare un oggetto StringBuilder? Le stringhe in php sono mutabili. Pertanto le prestazioni non sono un problema.
solo costruire stringa come questa
$string = "start";
$string .= "appended string";
$string .= "appended string";
etc.
Vorrei +1, ma l'operatore di concatenazione è '. =', non '+ =' ('+ =' è usato per Inoltre, che è un operatore diverso dalla concatenazione) ... – ircmaxell
oops, Grazie per averlo indicato.Per molto usato per java: P. Risolto adesso –
sì l'ho notato anch'io, dal linguaggio C :) – RobertPitt
È possibile utilizzare sprintf
che è solo una versione di base, ma non richiede librerie extra, esempi Seguire
$String = "Firstname %s, lastname %s, Age %d";
echo sprintf($String,"Robert","Pitt",22);
e maniglie anche casting di tipo e posizione sostituzioni:
$format = "The %2$s contains %1$d monkeys. That's a nice %2$s full of %1$d monkeys.";
sprintf($format, $num, $location);
Tutti se mi piace l'aspetto della risposta di jacob :)
dare un'occhiata alla grande funzionalità di t sua funzione e sua sorella funct ione qui: http://php.net/manual/en/function.sprintf.php
Non ho mai capito l'utilità di questa funzione in quel tipo di metodo .. – Webnet
@Webnet Beh, va bene per le stringhe definite altrove (ad esempio in un file di traduzione). Altrimenti diventa nient'altro che una stringa magica (che è lo stesso concetto di [Numero magico] (http://en.wikipedia.org/wiki/Magic_number)) – ircmaxell
L18n è esattamente l'uso migliore per questa funzione e anche funzione sorella per le conversioni char: 'printf (" char 65 =% c ", 65);' – RobertPitt
Ci sono alcune implementazioni là fuori, ma non vedo il motivo per cui si avrebbe bisogno di uno StringBuilder in PHP, almeno non per motivi di prestazioni. La semplice concatenazione di stringhe in PHP è più veloce di sprintf o dell'impostazione suggerita da Jacob.
Non è necessario StringBuilder o StringBuffer in PHP, PHP è super a portata di mano che vi offro, utilizzando da heredoc e NowDoc se si desidera mantenere PyString:
$YourString = "start";
$YourString .= <<<'EOD'
appended string
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;
$YourString .= <<<buffer
appended string
Example of string
spanning multiple lines
using heredoc syntax.
appended string
appended string
buffer;
in base alla risposta, ho suggerito di utilizzare variabili e campi di classe direttamente all'interno del blocco HERE_DOC/NOW_DOC. –
Risposta del @Amir, mi ha dato ispirazione per il fatto che in PHP se vuoi parametri 'named parameters' o 'posizionitional', non hai bisogno di sprintf
, ma HERE_DOC/NOW_DOC funziona perfettamente. È possibile ancheutilizzare questo all'interno di una classe per proprietà e getter di chiamata.
class MyClass{
private $property;
private $stock; // some other object with getter 'getSomeProperty()'
function __toString(){
$localvar = 'Localvar';
$localvar2 = 'Localvar2';
return <<<HERE_DOC
{{
fqsn: {$this->stock->getSomeProperty()},
property: {$this->property},
localvar: {$localvar},
localvar2: $localvar2
}}
HERE_DOC;
} // end __toString()
} // end MyClass
- 1. Scrivi StringBuilder per lo streaming
- 2. capacità StringBuilder()
- 3. StringBuilder o + =
- 4. replaceAll per StringBuilder con supporto regex?
- 5. Equivalente di Dart per Java StringBuilder
- 6. Quando usare StringBuilder?
- 7. Stream StringBuilder su file
- 8. Come aggiungere due stringBuilder?
- 9. Come clonare() StringBuilder
- 10. StringBuilder Vs StringWriter/StringReader
- 11. Groovy StringBuilder letterale/StringBuffer
- 12. interessante OutOfMemoryException con StringBuilder
- 13. Crea StringBuilder dal byte []
- 14. StringBuilder vs XmlTextWriter
- 15. Perché StringBuilder non stampa?
- 16. Newline character in stringbuilder
- 17. Stringbuilder in CIL (MSIL)
- 18. StringBuilder inizializzazione in Java
- 19. StringBuilder append vs +
- 20. StringBuilder append() e valori nulli
- 21. Java StringBuilder e sicurezza thread
- 22. Smaltimento di un oggetto StringBuilder
- 23. StringBuilder aggiunge null come "null"
- 24. Semplice StringBuilder costruttore/metodo questione
- 25. StringBuilder modificato da più thread
- 26. StringBuffer vs StringBuilder Vs StringTokenizer
- 27. modo corretto di utilizzare StringBuilder
- 28. Aggiungi spazio bianco a stringbuilder?
- 29. StringBuilder e byte di conversione
- 30. Android StringBuilder vs String Concatenazione
Perché vuoi qualcosa di simile? – Webnet
correlati: [php String Concatenation, Performance] (http://stackoverflow.com/q/124067/106224) (molte delle risposte non soddisfano la necessità di una tale classe, ma tutte con buone ragioni) – BoltClock
Non si Ho bisogno di StringBuilder in PHP, vedi la mia risposta: http://stackoverflow.com/questions/124067/php-string-concatenation-performance/16112845#16112845 – nightcoder