Получил простую функцию внутри класса, которая инициализирует переменную сообщения, устанавливая для нее значение POST. Есть ли смысл устанавливать его, так как $ _POST будет доступен где угодно в классе? Это вызывает проблемы безопасности?
function set_posted_data(){
$this->message = $_POST["message"];
}
Я бы сделал это несколько иначе. К сожалению, я понятия не имею, как выглядит ваш класс, поэтому я должен сделать некоторые догадки. Прежде всего, я бы всегда начинал с общей функции:
public function setMessage($message) {
$this->message = $message;
}
Таким образом, вы все равно можете использовать класс, даже если сообщение не опубликовано. Теперь, как правило, я бы установил опубликованное значение следующим образом:
myclass.setMessage($_POST["message"]);
Таким образом, я бы не использовал суперклассы в классе вообще. Обычно я окружаю их некоторыми проверками, поэтому принимаются только действительные сообщения. Здесь, где я сталкиваюсь с проблемами: я понятия не имею, что делать здесь, потому что я ничего не знаю о вашем коде. Но проверка длины может быть полезна, и, возможно, HTML-код не разрешен и т.д. Общие проверки могут быть включены в класс, например, без HTML:
public function setMessage($message) {
$this->message = strip_tags($message);
}
Я обрабатывал все опубликованные параметры и делал все конкретные проверки, более или менее вместе. Это упрощает проверку безопасности кода.
Я предпочитаю инъекцию для всего, кроме верхнего уровня функций. (т.е. $class->function($_POST['val'])
. Причина инъекции предпочтительнее
Конечно, лучше сделать так, как вы показываете, для этого есть несколько причин: