Лучший способ передать строку в функцию? - PullRequest
1 голос
/ 18 сентября 2010

Какой лучший способ с точки зрения безопасности передать строку в функцию.Я знаю, что могу использовать глобальные переменные, сессии и в строке функции.Как функция test ($ string).Какой лучший подход?Если кто-нибудь знает, пожалуйста, дайте мне знать.

Я пытаюсь написать что-то вроде этого, например:

$url = 'http://domain.com/';

function test() {
  echo $url;
}

Но, если возможно, не использовать глобальные переменные или строки функций.Как описано выше.

Возможно, я мог бы использовать определение и определение?

Ответы [ 4 ]

0 голосов
/ 08 октября 2010

Попробуйте использовать массив $ GLOBALS function test() { echo $GLOBALS['url']; }

или

function test() { global $url; echo $url; }

0 голосов
/ 18 сентября 2010

Как ни странно, я думаю, что если вы спрашиваете чисто с точки зрения безопасности, я бы сказал, что лучше использовать глобальные переменные для передачи данных в функции.

"Ух ты! Ты псих ?" Я слышал, вы спрашиваете?

Это похоже на идею отмены ремней безопасности, вместо этого вместо того, чтобы зафиксировать острый 6-дюймовый шип на всех рулевых колесах. Это изменило бы ваше вождение, нет? Вы станете самым безопасным водителем в мире за одну ночь!

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

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

Пусть начнутся отрицательные голоса:)

0 голосов
/ 18 сентября 2010

Хорошо, вот еще один ответ, который я только что выяснил, и это достаточно хорошо для меня.

define('XML', 'file.xml');

тогда в функции сделайте что-то вроде этого

function test()
  $xml = simplexml_load_file(XML);
}

Таким образом, по крайней мереМне не нужно менять имя «file.xml», если мне нужно в каждой функции: -)

0 голосов
/ 18 сентября 2010

Ребята, я понял. Вот пример:

define('URL', 'http://domain.com/');

function test() {
  echo URL;
}

Но если кто-то другой знает другие пути, пожалуйста, ответьте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...