Кто-то сделал реализацию StringBuilder
в PHP?
StringBuilder для PHP
Ответ 1
Почему вы хотите использовать StringBuilder? Строки в php изменяются. Поэтому производительность не является проблемой.
Просто создайте строку, подобную этой
$string = "start";
$string .= "appended string";
$string .= "appended string";
etc.
Ответ 2
Вы можете использовать sprintf
, который является только базовой версией, но не требует дополнительных библиотек, примеры Follow
$String = "Firstname %s, lastname %s, Age %d";
echo sprintf($String,"Robert","Pitt",22);
А также обрабатывает литье и замену типов:
$format = "The %2$s contains %1$d monkeys. That a nice %2$s full of %1$d monkeys.";
sprintf($format, $num, $location);
Все, хотя мне нравится внешний вид ответа jacob:)
взгляните на большую функциональность t его функции и функции сестры здесь: http://php.net/manual/en/function.sprintf.php
Ответ 3
Есть некоторые реализации, но я не понимаю, зачем вам нужен StringBuilder в PHP, по крайней мере, не по соображениям производительности. Простая конкатенация строк в PHP выполняется быстрее, чем sprintf, или предложенный Якоб подразумевается.
Ответ 4
Вам не нужен StringBuilder или StringBuffer в PHP, PHP очень удобен. Я предлагаю вам, используя здесьDoc и NowDoc, если вы хотите сохранить 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;
Ответ 5
Ответа на вопрос @Amir, вдохновил меня на то, что в PHP, если вам нужны параметры "named parameters" или "positional", вам не нужно sprintf
, но HERE_DOC/NOW_DOC отлично работает. Вы даже можете использовать это внутри класса для свойств и использовать getters.
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