WikiDer > ActiveVFP

ActiveVFP
AVFP
ActiveVFPlogo2.png
Парадигмаобъектіге бағытталған, процессуалдық, 4-ГЛ
ӘзірлеушіVFP қауымдастығы
Бірінші пайда болды2001; 19 жыл бұрын (2001)
Тұрақты шығарылым
6.03 / 29.01.2013 ж; 7 жыл бұрын (2013-01-29)
Пәнді теруДинамикалық, әлсіз
Іске асыру тіліVisual FoxPro 9 SP2
ОЖWindows
ЛицензияMIT
Файл атауының кеңейтімдеріЖалпы кеңейтулер
.avfp
Басқа кеңейтулер
кеңейтілмеген
Веб-сайтactivevfp.codeplex.com

ActiveVFP (сонымен бірге AVFP) Бұл серверлік сценарий арналған рамка Веб-әзірлеу шығару динамикалық веб-парақтар. Ұқсас PHP, бірақ отандықты пайдалану Visual Foxpro (VFP) тілі және мәліметтер базасы (немесе басқасы мәліметтер базасы сияқты Microsoft SQL және MySQL), ActiveVFP-ті де қолдануға болады Модельді қарау-контроллері (MVC) веб-қосымшалар, сондай-ақ RESTful API. ActiveVFP мүлдем тегін және ашық ақпарат көзі және Microsoft Visual FoxPro немесе кез-келген қосымша бағдарламалық жасақтаманы сатып алуды қажет етпейді.

ActiveVFP бастапқыда 2001 жылы құрылды. ActiveVFP-тің негізгі енгізілуін қазір Foxpro қауымдастығы шығарады activevfp.codeplex.com және ActiveVFP-ге ресми сілтеме ретінде қызмет етеді. ActiveVFP болып табылады ақысыз бағдарламалық жасақтама астында шығарылды MIT лицензиясы.

ActiveVFP серверге арналған веб-тілдер мен фреймворктар арасында ерекше, өйткені оның тілде құрылған мәліметтер базасы мен мәліметтер базасының функционалдығы бар.

Синтаксис

ActiveVFP жергілікті Visual Foxpro тілін пайдаланады, өйткені ол Microsoft шығарған Visual FoxPro 9 SP2 соңғы нұсқасында бар. The көп бұрандалы VFP жұмыс уақыты, vfp9t.dll, VFP жұмыс уақытының қарапайым жұмыс үстелінің нұсқасының орнына қолданылады.[1]

ActiveVFP қолдана отырып, VFP компиляторы тек VFP кодын оның бөлгіштерінде орындайды. Оның бөлгіштерінен тыс кез-келген нәрсе VFP өңделмейді. Ең көп таралған бөлгіштер ASP стиліндегі <% немесе <% = және%> қысқа формалары болып табылады. <%%> FoxPro код блогын орындайды және <% =%> айнымалыны дереу басып шығарады. Барлық осы бөлгіштердің мақсаты VFP кодын VFP емес кодтан, соның ішінде HTML-ден бөлу.

Веб-бағдарламалау үшін ActiveVFP-ке қол жетімді негізгі объектілер: oRequest, oResponse және oSession (және Classic Active Server Pages (ASP) -те қол жетімді барлық нысандар)). Бұл нысандар толығымен Visual FoxPro ішінде FoxPro көмегімен веб-бағдарламалауды орындау үшін қолданылады.

FoxPro тілінде Basic сияқты басқа бағдарламалау тілдеріне ұқсас командалар бар. Ілмектерге басқа бағдарламалау тілдерімен таныс кез-келген адам оңай түсінетін қолданыстағы do, if, while, for, else командалары жатады. Командалар «бұйрық» және «бұйрық» түрінде болады. Сонымен қатар, тілде мәліметтер базасын кеңейту және индекстеу командалары бар.[2]

PHP сияқты ActiveVFP де автоматты артықшылықтарды пайдаланады қоқыс жинағы (GC) және Динамикалық / әлсіз теру,[3] бағдарламашының өнімділігін арттыру.

«Сценарий» режимінен басқа, ActiveVFP Model-View-Controller (MVC) дизайнын ұсынады. Контроллер Foxpro .prg файлында орналасқан FoxPro класс кодынан тұрады. Шығарылым басқа заманауи MVC бағдарламаларына ұқсас .avfp көріністерінен, JSON және басқаларынан тұруы мүмкін. Модель DBF файлдары немесе басқа дерекқорлар болуы мүмкін.

Мысалдар

  • VFP коды енгізілген HTML кестені және жазбалар тізімін ашуға арналған код
<!DOCTYPE html><html><head><мета сипаттама =«utf-8»><title>HTML-де VFP коды</title>...<% *Параметрлер lnTotPerPage  =10        лнпагенумерлер =5          lnБастау=VAL(oСұраныс.querystring(«бет»))   lc түймесі=oСұраныс.querystring(«nav»)       *кв SELE * КІМДЕН Тапсырыс беруші КІШКЕ КУРСОР tCursor *жасау бет сандар БАСТАУ=0 lnPageMax = 0 lnPageBegin = 0 lnRowCount = Есепке алу() ОРНАТУ PROC дейін oProp.AppStartPath+'prg  pages' ҚОСЫМША  lcбеттер= беттер(lnTotPerPage,лнпагенумерлер,lnБастау,lc түймесі,lnRowCount)%>... <% ҮШІН lnX = lnPageBegin TO lnPageMax      Егер lnX <= lnRowCount      БАРУ lnX %>      <tr>        <тд ені ="40%"> <қаріп бет =«helvetica, arial» өлшемі ="2">	 hhref ="<%=JustPath(oProp.ScriptPath)+[/егжей-тегжейлі.авфп?cust_id=]+;         ALLTRIM(cust_id)%>"><%=tCursor.компания%>        <тд ені ="36%"> <қаріп бет =«helvetica, arial» өлшемі ="2">	<%=tCursor.Байланыс%>        <тд ені ="24%"> <қаріп бет =«helvetica, arial» өлшемі ="2" түс ="#000000">	<%=tCursor.Тақырып %>      </tr><%   ENDIF   Соңына дейін %>                               ...<%= lcбеттер %>
  • MVC веб-қосымшасына арналған VFP контроллерінің коды
* customers.prg -Customers Controller * * Main.prg және .AVFP сценарий кодын айналып өтеді * КЛАНДЫҚ КЛАССТАРДЫ АНЫҚТАУ, CONCOLOLER AS restController * PROCEDURE openData SELECT 0 USE (THIS.homeFolder + «customers.dbf») ALIAS тұтынушылары ENDPROC PROCEDURE infoAction && GET www. hostname.com/app/customers/info RETURN «homeFolder: » + THIS.homeFolder + «» ENDPROC процедурасы getAction && GET www.hostname.com/app/customers/  ЖЕРГІЛІКТІ cCustId cCustId = THIS.Params [1] THIS.openData () Клиенттерді таңдау SEPTId = cCustId IF FOUND () LOCAL cJSON ** ПАЙДАЛАНУ mydbf && қатесі * тез және лас JSON cJSON = [{«custId»: «] + RTRIM (custId) + [«,» custName «:»] + RTRIM (custName) + [«,] +; [«custStat»: «] + RTRIM (custStat) + [»}] ҚАЙТАРУ cJSON ENDIF ENDPROC PROCEDURE listAction && GET www.hostname.com/app/customers/ LOCAL cHTML cHTML = «» * oEmp = newOBJECT ('schedbizobj', 'c:  avfp5.61Demo  prg  utiltest2.prg') PROC параметрін substr (oProp.AppStartPath, 1, AT ([], oProp.AppStartPath, 2)) + 'prg  AVFPutilities' ADDITIVE && ADDITIVE қолданыңыз немесе жаман жағдайлар орын алады! THIS.openData () SELECT CUSTMLERS cHTML = oHTML.mergescript (FILETOSTR (substr (oProp.AppStartPath, 1, AT ([], oProp.AppStartPath, 2)) + 'viewtest.avfp')) RETURN cHTML ENDPROC PROCEDURE helloworld & теңшелетін әдіс (&& GET www.hostname.com/app/customers/helloworld/) LOCAL cHTML cHTML = «» * ҚОЛДАНУ mydbf * SET PROC-ны substr (oProp.AppStartPath, 1, AT ([], oProp.AppStartPath, 2) )) + 'prg  AVFPutities' ADDITIVE && ADDITIVE қолданғаныңызға көз жеткізіңіз немесе жаман жағдайлар орын алады! cHTML = oHTML.mergescript (FILETOSTR (substr (oProp.AppStartPath, 1, AT ([], oProp.AppStartPath, 2)) + 'hello.avfp')) RHTURN cHTML ENDPROC PROCEDURE getemployees && тапсырыс әдісі (&& GET www. hostname.com/app/customers/getemployee/  oJSON = NEWOBJECT ('json', 'json.prg') SET PATH TO oProp.AppStartPath + 'data  AVFPdemo41 ' таңдаңыз e.emp_id id, e.first_Name as firstName, e.last_Name lastName, e.title title, [images / Emps /] + e.picture as picture, count (r.emp_id) as reportCount; e сол жақтан V қызметкеріне r қосылыңыз (r.reports_to) = VAL (e.emp_id); Іздеу нәтижелеріне кіру; e.last_Name, e.emp_id, e.first_Name, e.title, e.picture; e.last_Name, e.first_Name бойынша тапсырыс oJSON.keyforcursors = «items» * JSON деректері мен қасиеттерін кері жіберіңіз oResponse.ContentType = «application / json; charset = utf-8» oResponse.Write (oJSON.stringify ('SearchResults')) oResponse.Flush lcHTMLout = [] ENDPROC ******* ************************************************** *************** ENDDEFINE

Әдебиеттер тізімі

Сыртқы сілтемелер