Установите переменную $ _GET ['foo'] при вызове PHP-скрипта в CLI - PullRequest
0 голосов
/ 28 октября 2011

При тестировании и разработке некоторых скриптов я хотел бы иметь возможность определять определенные переменные $ _GET.

Когда скрипт вызывается через mod_php / apache, эти переменные будут определены путем добавления ?foo=bar к URL-адресу.

Возможно ли это вообще?

Ответы [ 4 ]

4 голосов
/ 28 октября 2011

Нет, через CLI это невозможно. Однако вы можете вручную присвоить значение переменной $_GET.

ИЛИ вы можете использовать аргументы командной строки и присвоить их $_GET.

$_GET['data'] = $argv; 

^^ Это немного управляемо ..

1 голос
/ 28 октября 2011

Вы можете просто сделать $_GET['foo'] = 'bar';, чтобы установить его.

0 голосов
/ 28 октября 2011

Если у вас есть некоторый код, который использует $ _GET ['foo'], чтобы сделать что-то, то лучший способ справиться с этим - извлечь этот код в класс / метод / функцию, а затем получить контекстно-зависимый каркас, который собирает соответствующие данные из среды и передают их в блок кода для выполнения своих задач.

Допустим, у вас был встроенный PHP-скрипт, подобный этому:

$foo = $_GET['foo'];
// do what I need to do with $foo

Тогда вы можете обернуть это в функцию

function doBar( $foo ) {
    // do what I need to do with $foo
}

Ваш встроенный PHP-скрипт теперь будет

$foo = $_GET['foo'];
doBar( $foo );

И вы можете очень легко написать CLI-скрипт для проверки этого, либо установив $ foo напрямую

$foo = 'test value';
doBar( $foo );

Или путем анализа входов CLI и получения оттуда foo.

По сути, ваш код, который делает вещи (модель в традиционном MVC), изолирован от своей среды и может быть использован через HTTP-запрос, в скрипте CLI, в модульном тесте и т. Д.

Одна вещь, от которой я бы остался в стороне, это присвоение ваших собственных значений суперглобальным переменным $ _GET и $ _POST. Это вонючий и быстрый способ дать вам проблемы в будущем.

0 голосов
/ 28 октября 2011

Два параметра для установки переменных $ _GET: просто есть что-то вроде:

 <a href='www.example.com/index.php?foo=bar'>blah</a>

Это установит $ _GET ['foo'] в бар.

Или:

<form method='get' action='index.php'>

Любая информация, которую вы отправите с этой формой, будет извлечена с помощью $ _GET.

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