Ўсталяваць $ _GET [ «Foo»] пераменная пры выкліку PHP скрыпт на CLI

Пры тэставанні і распрацоўцы некаторых сцэнарыяў, я хацеў бы быць у стане вызначыць некаторыя зменныя $ _GET.

Калі скрыпт называецца карыта mod_php/Апач гэтыя зменныя будуць вызначаныя шляхам дадання ? Foo = бар ў URL.

Ці магчыма гэта наогул?

0
Вы цалкам маеце рацыю. Гэта проста, што абпал робіць адладку кансолі і хуткія тэсты падчас распрацоўкі, так значна лягчэй затым альт-светлячок ў табуляцыі для кожнага змены. У вытворчасці GET будзе выкарыстоўвацца; ў маім акр развіцця я хацеў бы спосаб, каб проста вызначыць некаторыя рэчы там.
дададзена аўтар berkes, крыніца
Спытаеце сябе, чаму вы спрабуеце выкарыстоўваць $ _GET у праграме CLI. Разгледзім перагляд вашага дызайну.
дададзена аўтар John Cartwright, крыніца

4 адказы

Не, гэта не магчыма праз CLI. Аднак вы можаце ўручную прысвоіць значэнне ў $ _ GET зменнай.

Ці вы можаце выкарыстоўваць аргументы каманднага радка і завалодаць імі $ _ GET .

$_GET['data'] = $argv; 

^^ Гэта крыху кіраваным ..

4
дададзена

Вы можаце проста зрабіць $ _ GET [ 'Foo'] = 'бар' , каб усталяваць яго.

1
дададзена

Два варыянты ўсталяваць $ _GET зменныя: проста ёсць нешта накшталт:

 blah

Гэта дасць магчымасць устанавіць $ _GET [ 'Foo'] у радку.

альбо:

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

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

1
дададзена
Ні адзін з якіх знаходзіцца ўсё дастасавальна да CLI.
дададзена аўтар ceejayoz, крыніца
Так, занадта хутка, каб пакідаць паведамленні. Ужо да прагаласавалі правільны адказ.
дададзена аўтар Dennis, крыніца

Калі ў вас ёсць некаторы код, які выкарыстоўвае $ _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
дададзена