Подтвердить что ты не робот

StringBuilder для PHP

Кто-то сделал реализацию StringBuilder в PHP?

4b9b3361

Ответ 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