¿Alguien ha realizado una implementación de StringBuilder
en PHP?StringBuilder para PHP
Respuesta
Nota:
Esta respuesta es a partir de 2010, puede haber stringbuilders que pueden mejorar el rendimiento a estas alturas (a juzgar por los comentarios a continuación). No he trabajado con php durante mucho tiempo, por lo que mi conocimiento no está actualizado. Esta respuesta puede estar desactualizada.
¿Por qué quieres usar un StringBuilder? Las cadenas en php son mutables. Por lo tanto, el rendimiento no es un problema.
Sólo construir cadena como esta
$string = "start";
$string .= "appended string";
$string .= "appended string";
etc.
Yo haría +1, pero el operador de concatenación es '. =', no '+ =' ('+ =' se usa para Además, que es un operador diferente de la concatenación) ... – ircmaxell
Vaya, gracias por señalar eso.Muy acostumbrado a java: P. Solucionado ahora –
sí lo noté también, del lenguaje C :) – RobertPitt
Puede utilizar sprintf
que es sólo una versión básica, pero no requiere librerías adicionales, ejemplos siguen
$String = "Firstname %s, lastname %s, Age %d";
echo sprintf($String,"Robert","Pitt",22);
Y también se encarga de la conversión de tipos y posición reemplazos:
$format = "The %2$s contains %1$d monkeys. That's a nice %2$s full of %1$d monkeys.";
sprintf($format, $num, $location);
Todos sin embargo me gusta el aspecto de la respuesta de jacob :)
tomador un vistazo a la gran funcionalidad de t su función y su función hermana ion aquí: http://php.net/manual/en/function.sprintf.php
Nunca he entendido la utilidad de esta función en ese tipo de método. . – Webnet
@Webnet Bueno, es bueno para las cadenas que se definen en otra parte (como en un archivo de traducción). De lo contrario, se convierte en nada más que una cadena mágica (que es el mismo concepto que un [Magic Number] (http://en.wikipedia.org/wiki/Magic_number)) – ircmaxell
L18n es exactamente el mejor uso para esta función y también su función hermana para conversiones char: 'printf (" char 65 =% c ", 65);' – RobertPitt
Hay algunas implementaciones por ahí, sin embargo, no veo por qué se necesita un StringBuilder en PHP, por lo menos no por razones de rendimiento. La concatenación simple de cadenas en PHP es más rápida que sprintf o la impelementación sugerida por Jacob.
No es necesario StringBuilder o StringBuffer en PHP, PHP es súper práctico que te ofrezco, usando de heredoc y nowdoc si desea mantener 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;
en función de su respuesta, hice una sugerencia de usar variables y campos de clase directamente dentro del bloque HERE_DOC/NOW_DOC. –
respuesta de @Amir, me dio Inspiración al hecho de que en PHP si desea parámetros 'parámetros nombrados' o 'posicionales', no necesita sprintf
, pero HERE_DOC/NOW_DOC funciona perfecto. Puede inclusoutilizar esto dentro de una clase para las propiedades y los captadores de llamadas.
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. Scala StringBuilder
- 2. capacidad StringBuilder()
- 3. StringBuilder o + =
- 4. Java: utilizar StringBuilder para insertar al comienzo
- 5. StringBuilder para anexar una colección en C#
- 6. ¿Debo usar StringBuilder o StringBuffer para webapps?
- 7. Equivalente a StringBuilder para matrices de bytes
- 8. Cadena, StringBuffer y StringBuilder
- 9. StringBuilder Vs StringWriter/StringReader
- 10. Concatenación con StringBuilder
- 11. Escribir StringBuilder en Stream
- 12. StringBuilder literal Groovy/StringBuffer
- 13. StringBuilder vs XmlTextWriter
- 14. Stream StringBuilder al archivo
- 15. java outOfMemoryError con stringbuilder
- 16. Adjuntar con StringBuilder
- 17. Cómo reutilizar StringBuilder obj?
- 18. Cómo clonar() StringBuilder
- 19. Stringbuilder en CIL (MSIL)
- 20. StringWriter o StringBuilder
- 21. subcadena StringBuilder C#
- 22. StringBuilder en Flex
- 23. Capacidad predeterminada de StringBuilder
- 24. Cuándo usar StringBuilder?
- 25. StringBuilder/StringBuffer vs. "+" Operador
- 26. StringBuilder append vs +
- 27. de .NET flujos seguros StringBuilder
- 28. StringBuilder vs Cadena considerando reemplazar
- 29. Java StringBuilder and Thread Safety
- 30. ¿Las cadenas StringBuilder son inmutables?
¿Por qué quieres algo como esto? – Webnet
Relacionado: [php String Concatenation, Performance] (http://stackoverflow.com/q/124067/106224) (muchas de las respuestas descartan la necesidad de dicha clase, pero todas con buenas razones) – BoltClock
No lo hace Necesito StringBuilder en PHP, mira mi respuesta: http://stackoverflow.com/questions/124067/php-string-concatenation-performance/16112845#16112845 – nightcoder