Даже если вы говорите, что переносимость не является проблемой, вы никогда не знаете наверняка, что нас ждет в будущем, поэтому я бы посоветовал вам пересмотреть эту позицию. Например, однажды меня попросили портировать редактор, написанный (кем-то еще), из Unix в DOS. Исходная программа не должна была быть портирована и была написана с конкретными вызовами Unix, глубоко встроенными в код. Изучив объем требуемой работы, мы отказались от этой задачи как отнимающей слишком много времени.
Я использовал вызовы exec в PHP; однако у меня не было другого способа выполнить то, что мне было нужно (мне пришлось называть другую программу, написанную на другом языке, без другого моста между языками). Однако, IMO, вызовы exec, которые не нужны, ужасны. Как уже говорили другие, они также могут создавать угрозы безопасности и замедлять вашу программу.
Как вы сказали сами, вам нужно хорошо документировать вызовы exec, чтобы быть уверенными, что они будут понятны программистам. Зачем создавать дополнительную работу? Не только сейчас, но и в будущем, когда любые изменения в вызове exec также необходимо будет документировать.
Наконец, я предлагаю вам немного лучше изучить PHP и его функции. Я не очень хорош с PHP, но всего за несколько минут с Google и php.net , я думаю, что достиг того же, что вы привели в качестве примера с:
$search_results = preg_grep($search_string, file($file_name));
foreach ($search_results as $result) {
echo $result . "\n";
}
Да, это немного больше кода, но не так много, и вы можете поместить его в функцию, если это уместно ... и я не удивлюсь, если гуру PHP сможет его сократить.