Использование PDO и MYSQLi является хорошей практикой для предотвращения инъекций SQL, но если вы действительно хотите работать с функциями и запросами MySQL, было бы лучше использовать
$unsafe_variable = mysql_real_escape_string($_POST['user_input']);
Есть больше возможностей для предотвращения этого: например, идентификация - если ввод представляет собой строку, число, символ или массив, есть так много встроенных функций для обнаружения этого. Кроме того, было бы лучше использовать эти функции для проверки входных данных.
$unsafe_variable = (is_string($_POST['user_input']) ? $_POST['user_input'] : '');
$unsafe_variable = (is_numeric($_POST['user_input']) ? $_POST['user_input'] : '');
И гораздо лучше использовать эти функции для проверки входных данных с помощью mysql_real_escape_string
.
Для простых объектов можно использовать синтаксис ассоциативного массива и бросающий для получения объекта:
<?php
$obj = (object)array('foo' => 'bar');
echo $obj->foo; // yields "bar"
, Но рассмотрение, которое можно легко видеть, насколько бесполезный это (Вы просто оставили бы его как ассоциативный массив, если бы Ваша структура была настолько проста).
Был предложение реализовать этот синтаксис массива . , Но это было уменьшено.
Обновление сокращенный синтаксис для массивов был повторно обсужден, принят и находится теперь на путь быть выпущенным с PHP 5.4.
, Но все еще нет никакой стенографии для объектов. Необходимо будет, вероятно, явно бросить к объект :
$obj = (object) ['foo'=>'bla', 'bar'=>2];
В PHP нет никакой объектной стенографии, но можно использовать точный синтаксис JavaScript, если Вы используете json_encode и функции json_decode.
Метод, предоставляемый crescentfresh, работает очень хорошо, но у меня возникла проблема с добавлением дополнительных свойств к объекту. Чтобы обойти эту проблему, я реализовал spl ArrayObject.
class ObjectParameter extends ArrayObject {
public function __set($name, $value) {
$this->$name = $value;
}
public function __get($name) {
return $this[$name];
}
}
//creating a new Array object
$objParam = new ObjectParameter;
//adding properties
$objParam->strName = "foo";
//print name
printf($objParam->strName);
//add another property
$objParam->strUser = "bar";
С помощью этого подхода вы можете многое сделать, чтобы упростить создание объектов даже из массивов, надеюсь, это поможет.