Ребят, думаю для многих будет интересно узнать, почему данный код не работает: PHP: class api { public function aliasFormat($alias=false){ global $modx; if ( !$alias ) $alias = 'novyj'; else $alias = format::translite($alias); $q = $modx->db->query('select id from modx_site_content where alias = "'.$alias.'"'); $c = $modx->db->getRecordCount($q); if ( $c > 0 ){ $alias = explode('-', $alias); $alias_pf = end($alias); if ( is_numeric($alias_pf) ) array_pop($alias); else $alias_pf = false; if ( $alias_pf ) $alias_pf++; else $alias_pf = 1; $alias = mb_strtolower(format::translite(implode('-', $alias).'-'.$alias_pf)); self::aliasFormat($alias); } return $alias; } } aliasFormat - это транслитерация и избавление от ненужных символов. Если в базе найден alias "novyj", то следующий alias должен быть novyj-1, если и он существует, то, по идее, novyj-2, но на деле что- то мне непонятное происходит, прям таки магическое, и он остаётся novyj-1. Почему?
Niet. Это интересно только для тебя. Не надо этого вот маркетингового псевдоажиотажа и апелляции к множеству. Просто скажи "не понимаю, почему не работает код, помогите". А тебе просто скажут - прикручивай дебаггер и отлаживай пошагово. А ты прикрутишь дебаггер и отладишь. И найдешь причину проблемы. И исправишь ее. И все заработает. И все будут счастливы. И будут жить долго долго и вообще никогда не умрут.
Не беря конечно имеющих столь серьёзных приспособлений на вооружении. Каюсь, преждевременно я себя возвёл в профессионалы) Честно признаться, ни о каком маркетинге и апелляции к множеству и в мыслях не было. Наглядно же всё должно работать и замечание VS как то смутно выглядит. --- Добавлено --- Может тогда посоветуете как прикрутить дебагер к серверу, к которому не имеется root доступ?
В итоге я пошёл на поводу той логики, которая мне вскрывала мозг и сделал так как ей было нужно, в итоге у меня получилось нечто работающее как надо: PHP: class api { public function af($alias){ global $modx; $q = $modx->db->query('select id from modx_site_content where alias = "'.$alias.'"'); $c = $modx->db->getRecordCount($q); if ( $c > 0 ){ $alias = explode('-', $alias); $alias_pf = end($alias); if ( is_numeric($alias_pf) ) array_pop($alias); else $alias_pf = false; if ( $alias_pf ) $alias_pf++; else $alias_pf = 1; $alias = mb_strtolower(format::translite(implode('-', $alias).'-'.$alias_pf)); $alias = self::af($alias); } return $alias; } public function aliasFormat($alias=false){ global $modx; if ( !$alias ) $alias = 'novyj'; else $alias = format::translite($alias); $alias = self::af($alias); return $alias; } } Не обессудьте профессионалы! --- Добавлено --- А не буду исправлять и пытаться сделать красиво вам на зло)
Хочешь сказать, что у тебя нет локального dev-сервера, где бы ты мог развернуть сборку, идентичную удаленной, исходники которой есть на руках? Серьезно? В этом вся проблема? Ты сразу ковыряешь продакшен?
Это понятно, там проект такой, что на нём сделать пару вещей и забыть на пол года. Но, всё же, лучше локальную копию иметь и через git изменения отправлять, хоть и малозначительные. --- Добавлено --- К тому же, совершенствовать систематичный подход будет полезно.