Рефакторинг кода - Visavi.net
https://visavi.net/
RSS - Visavi.nethttps://visavi.net/assets/img/images/logo_small.pngRSS - Visavi.net
https://visavi.net/
[email protected] (admin)[email protected] (admin)Mon, 23 Dec 2024 12:51:53 +030011. <strong>Башка</strong>, Вроде норм, но пока останусь на своем варианте
https://visavi.net/topics/41842/676208
Рефакторинг кода Вантуз-менSat, 10 Jan 2015 22:58:10 +0300Сообщенияhttps://visavi.net/topics/41842/67620812. <strong>ZiGR</strong>, он автоматом генериться, нужно только пару значений вписать.
https://visavi.net/topics/41842/676200
Рефакторинг кода АртурSat, 10 Jan 2015 22:05:24 +0300Сообщенияhttps://visavi.net/topics/41842/676200На скорую руку.<br>
<br>
Не думаю, что работать будет больно шустро, но здесь нет лишних проходов по одной и той же строке с целью замены.
https://visavi.net/topics/41842/676198
Рефакторинг кода АртурSat, 10 Jan 2015 21:14:48 +0300Сообщенияhttps://visavi.net/topics/41842/6761989. <strong>VITAMIN</strong>, нет, я был не в курсе. Спасибо, что поправил, теперь я пуду писать код намного лучше!
https://visavi.net/topics/41842/676197
Рефакторинг кода АртурSat, 10 Jan 2015 20:45:56 +0300Сообщенияhttps://visavi.net/topics/41842/676197Замени $i++ на ++$i<br>
<img src="https://visavi.net/uploads/stickers/D.gif" alt="D"> <br>
<br>
<em><span style="font-size:x-small">Добавлено через 05:39 сек.</span></em><br>
<blockquote class="blockquote"><strong>Башка</strong> (10 Января 2015 / 17:11)<br>
А iterate зачем?<br>
<br>
<em><span style="font-size:x-small">Добавлено через 06:14 сек.</span></em><br>
<pre class="prettyprint">
<?php
public function parse($source) {
$source = nl2br($source);
foreach ($this->parsers as $name => $parser) {
for ($i=0; $i <= (isset($parser['iterate']))? $parser['iterate'] : 1; $i++) {
if (isset($parser['callback'])) {
$source = preg_replace_callback($parser['pattern'], array($this, $parser['callback']), $source);
} else {
$source = preg_replace($parser['pattern'], $parser['replace'], $source);
}
}
}
return $source;
}
</pre>
<br>
Но ООП какое то натянутое, если честно. Да и трудозатратное решение выходит.</blockquote>
<br>
Ты вкурсе что твой варик с <br>
for ($i=0; $i <= (isset($parser['iterate']))? $parser['iterate'] : 1; $i++)<br>
будет еще более тормозной.<br>
Т.к. это условие будет проверятся с каждой итерацией.
https://visavi.net/topics/41842/676195
Рефакторинг кода VITAMINSat, 10 Jan 2015 20:29:23 +0300Сообщенияhttps://visavi.net/topics/41842/6761957. <strong>Vantuz</strong>, щас накидаю что нибудь интересное.
https://visavi.net/topics/41842/676193
Рефакторинг кода АртурSat, 10 Jan 2015 19:48:59 +0300Сообщенияhttps://visavi.net/topics/41842/6761934. <strong>Башка</strong>, да вот как раз и хотелось бы избавиться от ненужных прогонов если нет замен при первой итерации<br>
<br>
<em><span style="font-size:x-small">Добавлено через 02:40 сек.</span></em><br>
Ну класс конечно так себе согласен, но по крайней мере работает намного быстрее всех других парсеров которые тестировал<br>
к примеру <a href="http://jbbcode.com/" target="_blank" rel="nofollow">http://jbbcode.com/</a> хороший расширяемый парсер, но работает более чем в 50 раз медленнее чем который я привел выше
https://visavi.net/topics/41842/676187
Рефакторинг кода Вантуз-менSat, 10 Jan 2015 18:32:09 +0300Сообщенияhttps://visavi.net/topics/41842/6761875. <strong>TakteS</strong>, дело вкуса<br>
<br>
<em><span style="font-size:x-small">Добавлено через 05:29 сек.</span></em><br>
Кстати, в foreach не нужна переменная $name.
https://visavi.net/topics/41842/676185
Рефакторинг кода АртурSat, 10 Jan 2015 17:51:10 +0300Сообщенияhttps://visavi.net/topics/41842/6761854. <strong>Башка</strong>, С воздухом между строк выглядит все-таки более приятно.
https://visavi.net/topics/41842/676184
Рефакторинг кода юЮЮфювSat, 10 Jan 2015 17:42:06 +0300Сообщенияhttps://visavi.net/topics/41842/676184А iterate зачем?<br>
<br>
<em><span style="font-size:x-small">Добавлено через 06:14 сек.</span></em><br>
<pre class="prettyprint">
<?php
public function parse($source) {
$source = nl2br($source);
foreach ($this->parsers as $name => $parser) {
for ($i=0; $i <= (isset($parser['iterate']))? $parser['iterate'] : 1; $i++) {
if (isset($parser['callback'])) {
$source = preg_replace_callback($parser['pattern'], array($this, $parser['callback']), $source);
} else {
$source = preg_replace($parser['pattern'], $parser['replace'], $source);
}
}
}
return $source;
}
</pre>
<br>
Но ООП какое то натянутое, если честно. Да и трудозатратное решение выходит.
https://visavi.net/topics/41842/676181
Рефакторинг кода АртурSat, 10 Jan 2015 17:11:20 +0300Сообщенияhttps://visavi.net/topics/41842/6761812. <strong>ZiGR</strong>, последняя редакция тут <a href="https://github.com/visavi/rotorcms/blob/develop/includes/classes/BBCodeParser.php" target="_blank" rel="nofollow">https://github.com/visavi/rotorcms/blob/develop/includes/classes/BBCodeParser.php</a>
https://visavi.net/topics/41842/676180
Рефакторинг кода Вантуз-менSat, 10 Jan 2015 17:02:46 +0300Сообщенияhttps://visavi.net/topics/41842/676180Имеется вот такой код, реально ли его упростить?<br>
<pre class="prettyprint"><?php
/**
* Метод парсинга BBCode
* @param string $source текст содержаший BBCode
* @return string распарсенный текст
*/
public function parse($source) {
$source = nl2br($source);
foreach ($this->parsers as $name => $parser) {
if (isset($parser['iterate'])) {
for ($i=0; $i <= $parser['iterate']; $i++) {
if (isset($parser['callback'])) {
$source = preg_replace_callback($parser['pattern'], array($this, $parser['callback']), $source);
} else {
$source = preg_replace($parser['pattern'], $parser['replace'], $source);
}
}
} else {
if (isset($parser['callback'])) {
$source = preg_replace_callback($parser['pattern'], array($this, $parser['callback']), $source);
} else {
$source = preg_replace($parser['pattern'], $parser['replace'], $source);
}
}
}
return $source;
}
</pre>
https://visavi.net/topics/41842/676169
Рефакторинг кода Вантуз-менSat, 10 Jan 2015 15:21:41 +0300Сообщенияhttps://visavi.net/topics/41842/676169