У PHP есть одна очень серьезная проблема. Возможности этого языка не безграничны. Когда возможностей не хватает, то PHP может обращаться к системе и использовать его функции. Это вообще является торговой маркой всего подхода Linux, где каждое приложение пишется так, чтобы оно выполняло одну небольшую функцию, но делало это очень хорошо. С одной стороны, эта функция выполняется отлично, с другой стороны, требования к безопасности повышается.
Каждый вызов системной функции из PHP – это переход из одной доверительной системы в другую со своими приколами и обломами. Получая параметры от пользователя, мы должны их проверить на безопасность. Любое обращение к системе является небезопасным и проверка параметров должна повторяться.
В случае с .NET и Windows вообще, то тут подход немного другой. Тут предпочитают строить все целыми платформами и переходы меж уровнями и доверительными зонами сводится к минимуму. Например, сама платформа .NET на столько мощная, что необходимость в обращении к системе минимальна. Если в PHP для выполнения операции ping нужно вызвать system, то в .NET можно использовать классы.
Если в PHP вызывать system для пинга, то скорей всего придутся передавать адрес пингуемого хоста, который скорей всего приходит от пользователя. Просто так передать параметр пользователя в system – смертоубийство. А вот передать параметр с адресом в качестве адреса классу ping намного безопаснее.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
Небольшое регулярное выражение и проблемы больше нет.
Поправь если я неправ, но у каждого программиста найдется куча уже готовых функций, классов и т.п. И задача будет не сложней твоей - просто использовать уже готовый класс.
Такие преимущества, как огромное количество готовых классов, нужны лишь начинающим программистам и для заманивания больше числа новых.
Я не говорю, что проблема не решаема. Это просто неудобство, которое заставляет программиста быть постоянно на стреме и не зевать. В .NET тоже зевать нельзя, но так просто количество переходов через зоны даверия можно свести к минимуму.
можно отказаться от вызова системных функций напрямую и использовать что-то типа
<?php
require_once "Net/Ping.php";
$ping = Net_Ping::factory();
if (PEAR::isError($ping)) {
echo $ping->getMessage();
} else {
$ping->setArgs(array("count" => 5,
"size" => 32,
"ttl" => 512
)
);
var_dump($ping->ping('example.com'));
}
?>
то есть классы.
но для этого нужны всякие PEAR и PECL.
а когда возможностей PHP не хватает, пора задуматься о Perl/Ruby on Rails/Python
а собственно часто ли нужно в РНР обращение к системным функциям(если конечно это не сайт правительства,или блог президента)???
IMHO: РНР и без этого предоставляет кучу возможностей для вэб-программиста
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.