Синтаксис стенографии функции PHP для объектов?

Использование PDO и MYSQLi является хорошей практикой для предотвращения инъекций SQL, но если вы действительно хотите работать с функциями и запросами MySQL, было бы лучше использовать

mysql_real_escape_string

$unsafe_variable = mysql_real_escape_string($_POST['user_input']);

Есть больше возможностей для предотвращения этого: например, идентификация - если ввод представляет собой строку, число, символ или массив, есть так много встроенных функций для обнаружения этого. Кроме того, было бы лучше использовать эти функции для проверки входных данных.

is_string

$unsafe_variable = (is_string($_POST['user_input']) ? $_POST['user_input'] : '');

is_numeric

$unsafe_variable = (is_numeric($_POST['user_input']) ? $_POST['user_input'] : '');

И гораздо лучше использовать эти функции для проверки входных данных с помощью mysql_real_escape_string.

35
задан AbsoluteƵERØ 31 October 2017 в 06:30
поделиться

4 ответа

Для простых объектов можно использовать синтаксис ассоциативного массива и бросающий для получения объекта:

<?php
$obj = (object)array('foo' => 'bar');
echo $obj->foo; // yields "bar"

, Но рассмотрение, которое можно легко видеть, насколько бесполезный это (Вы просто оставили бы его как ассоциативный массив, если бы Ваша структура была настолько проста).

47
ответ дан Crescent Fresh 27 November 2019 в 06:30
поделиться

Был предложение реализовать этот синтаксис массива . , Но это было уменьшено.

<час>

Обновление сокращенный синтаксис для массивов был повторно обсужден, принят и находится теперь на путь быть выпущенным с PHP 5.4.

, Но все еще нет никакой стенографии для объектов. Необходимо будет, вероятно, явно бросить к объект :

$obj = (object) ['foo'=>'bla', 'bar'=>2];
42
ответ дан salathe 27 November 2019 в 06:30
поделиться

В PHP нет никакой объектной стенографии, но можно использовать точный синтаксис JavaScript, если Вы используете json_encode и функции json_decode.

3
ответ дан Justin Poliey 27 November 2019 в 06:30
поделиться

Метод, предоставляемый 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";

С помощью этого подхода вы можете многое сделать, чтобы упростить создание объектов даже из массивов, надеюсь, это поможет.

2
ответ дан 27 November 2019 в 06:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: