WikiDer > ActiveVFP

ActiveVFP
AVFP
ActiveVFPlogo2.png
Paradigmaob'ektga yo'naltirilgan, protsessual, 4-GL
TuzuvchiVFP hamjamiyati
Birinchi paydo bo'ldi2001; 19 yil oldin (2001)
Barqaror chiqish
6.03 / 2013 yil 29-yanvar; 7 yil oldin (2013-01-29)
Matnni yozishDinamik, zaif
Amalga oshirish tiliVisual FoxPro 9 SP2
OSWindows
LitsenziyaMIT
Fayl nomi kengaytmalariUmumiy kengaytmalar
.avfp
Boshqa kengaytmalar
kengaytirilmagan
Veb-saytfaolvfp.codeplex.com

ActiveVFP (shuningdek, nomi bilan tanilgan AVFP) a server tomonidagi skript uchun mo'ljallangan ramka Veb-ishlab chiqish ishlab chiqarish dinamik veb-sahifalar. O'xshash PHP, lekin mahalliyni ishlatish Visual Foxpro (VFP) tili va ma'lumotlar bazasi (yoki boshqasi) ma'lumotlar bazalari kabi Microsoft SQL va MySQL), ActiveVFP da ishlatilishi mumkin Model-View-Controller (MVC) veb-ilovalar RESTful API. ActiveVFP butunlay bepul va ochiq manba va Microsoft Visual FoxPro yoki qo'shimcha dasturlarni sotib olishni talab qilmaydi.

ActiveVFP dastlab 2001 yilda yaratilgan. ActiveVFP dasturining asosiy dasturini endi Foxpro hamjamiyati ishlab chiqaradi faolvfp.codeplex.com va ActiveVFP-ga rasmiy murojaat sifatida xizmat qiladi. ActiveVFP bu bepul dasturiy ta'minot ostida chiqarilgan MIT litsenziyasi.

ActiveVFP server tomonidagi veb-tillar va ramkalar orasida noyobdir, chunki u tilda o'rnatilgan ma'lumotlar bazasi va ma'lumotlar bazasi funksiyalariga ega.

Sintaksis

ActiveVFP mahalliy Visual Foxpro tilidan foydalanadi, chunki u Microsoft tomonidan ishlab chiqarilgan so'nggi versiyada mavjud Visual FoxPro 9 SP2. The ko'p tishli VFP ish vaqti odatiy ish stoli versiyasi o'rniga VFP ish vaqti, vfp9t.dll ishlatiladi.[1]

ActiveVFP-dan foydalangan holda, VFP kompilyatori VFP kodini faqat uning ajratuvchilari ichida bajaradi. Cheklovchilaridan tashqarida bo'lgan har qanday narsa VFP tomonidan qayta ishlanmaydi. Eng keng tarqalgan ajratuvchilar ASP uslubidagi qisqa shakllar <% yoki <% = va%>. <%%> FoxPro kod blokini bajaradi va <% =%> darhol o'zgaruvchini chiqaradi. Ushbu barcha ajratuvchilarning maqsadi VFP kodini VFP bo'lmagan kodlardan, shu jumladan HTML dan ajratishdir.

ActiveVFP-ga veb-dasturlash uchun mavjud bo'lgan asosiy ob'ektlar: oRequest, oResponse va oSession (va Classic Active Server Pages (ASP) da mavjud bo'lgan barcha ob'ektlar). Ushbu ob'ektlar FoxPro bilan veb-dasturlashni amalga oshirish uchun to'liq Visual FoxPro-da ishlatiladi.

FoxPro tili Basic kabi boshqa dasturlash tillariga o'xshash buyruqlarni o'z ichiga oladi. Qatorlarga boshqa dasturlash tillarini yaxshi biladigan har bir kishi osonlikcha tushunadigan foydalanishda do, if, while, for, else buyruqlari kiradi. Buyruqlar "buyruq" va "buyruq" shaklida bo'ladi. Tilda ma'lumotlar bazasini boshqarish va indeksatsiya qilish bo'yicha keng buyruqlar ham mavjud.[2]

PHP singari ActiveVFP ham avtomatik imkoniyatlardan foydalanadi xotira axlat yig'ish (GC) va Dinamik / zaif terish,[3] dasturchi samaradorligini oshirish.

ActiveVFP "skript" rejimidan tashqari Model-View-Controller (MVC) dizaynini ham taqdim etadi. Nazoratchi Foxpro .prg faylida joylashgan FoxPro sinf kodidan iborat. Chiqish boshqa zamonaviy MVC dasturlariga o'xshash .avfp ko'rinishlaridan, JSON va boshqalardan iborat bo'lishi mumkin. Model DBF fayllari yoki boshqa orqa ma'lumotlar bazalari bo'lishi mumkin.

Misollar

  • Ichiga o'rnatilgan VFP kodi HTML jadvalni ochish va yozuvlar ro'yxati uchun kod
<!DOCTYPE html><html><head> charset ="utf-8"><title>HTML-dagi VFP kodi</title>...<% *Sozlamalar lnTotPerPage  =10        lnpagenumbers =5          lnStart=VAL(oRequest.querystring("sahifa"))   lcButton=oRequest.querystring("nav")       *kv SELE * Dan Mijoz ICHIGA KURSOR tKursor *yaratmoq sahifa raqamlar BOSHLASH=0 lnPageMax = 0 lnPageBegin = 0 lnRowCount = RECCOUNT() O'rnatish PROC ga oProp.AppStartPath+'prg  pages' QO'ShIMChA  lcPages= sahifalar(lnTotPerPage,lnpagenumbers,lnStart,lcButton,lnRowCount)%>... <% UCHUN lnX = lnPageBegin TO lnPageMax      IF lnX <= lnRowCount      GOTO lnX %>      <tr>         kenglik ="40%">  yuz ="helvetica, arial" hajmi ="2">	 hhref ="<%=JustPath(oProp.ScriptPath)+[/tafsilot.avfp?cust_id=]+;         ALLTRIM(cust_id)%>"><%=tKursor.kompaniya%>         kenglik ="36%">  yuz ="helvetica, arial" hajmi ="2">	<%=tKursor.Aloqa%>         kenglik ="24%">  yuz ="helvetica, arial" hajmi ="2" rang ="#000000">	<%=tKursor.Sarlavha %>      </tr><%   ENDIF   ENDFOR %>                               ...<%= lcPages %>
  • MVC veb-ilovasi uchun VFP tekshiruvi kodi
* customers.prg -Customers Controller * * Main.prg va .AVFP skript kodini chetlab o'tmoqda * CLASS customersCROLL AS restController * PROCEDURE openData SELECT 0 USE (THIS.homeFolder + "customers.dbf") ALIAS mijozlari ENDPROC PROCEDURE infoAction && GET www. hostname.com/app/customers/info RETURN "homeFolder: " + THIS.homeFolder + "" ENDPROC PROCEDURE getAction && GET www.hostname.com/app/customers/  LOCAL cCustId cCustId = THIS.Params [1] THIS.openData () Mijozlarni joyini SEKTIRING custId = cCustId IF FOUND () LOCAL cJSON ** USE mydbf && test error * tez va iflos JSON cJSON = [{"custId": "] + RTRIM (custId) + ["," custName ":"] + RTRIM (custName) + [",] +; ["custStat": "] + RTRIM (custStat) + ["}] QAYTARISH cJSON ENDIF ENDPROC PROCEDURE listAction && GET www.hostname.com/app/customers/ LOCAL cHTML cHTML = "" * oEmp = newOBJECT ('schedbizobj', 'c:  avfp5.61Demo  prg  utiltest2.prg') SET PROC-ni substr (oProp.AppStartPath, 1, AT ([], oProp.AppStartPath, 2)) + 'prg  AVFPutilities' ADDITIVE && ishonch hosil qiling ADDITIVE dan foydalaning yoki yomon narsalar yuz beradi! THIS.openData () SELECT CUSTOMERS cHTML = oHTML.mergescript (FILETOSTR (substr (oProp.AppStartPath, 1, AT ([], oProp.AppStartPath, 2)) + 'viewtest.avfp')) RETURN cHTML ENDPROC PROCEDURE helloworld & maxsus usul (&& GET www.hostname.com/app/customers/helloworld/) LOCAL cHTML cHTML = "" * USD mydbf * SET PROC-ni substr (oProp.AppStartPath, 1, AT ([], oProp.AppStartPath, 2 )) + 'prg  AVFPutities' ADDITIVE && ADDITIVE ishlatganingizga ishonch hosil qiling yoki yomon narsalar yuz beradi! cHTML = oHTML.mergescript (FILETOSTR (substr (oProp.AppStartPath, 1, AT ([], oProp.AppStartPath, 2)) + 'hello.avfp')) RHTURN cHTML ENDPROC PROCEDURE getemployees && custom method (&& GET www. hostname.com/app/customers/getemployee/  oJSON = NEWOBJECT ('json', 'json.prg') SET PATH TO oProp.AppStartPath + 'data  AVFPdemo41 ' select e.emp_id as ID, e.first_Name as birinchi ism, e.last_Name familiya nomi bilan, e.title sarlavha bilan, [rasmlar / Emps /] + rasm sifatida rasm, reportCount sifatida count (r.emp_id); xodimdan chapga RAL-ga VAL (r.reports_to) = VAL (e.emp_id); Kursorni qidirish natijalariga kirish; e.last_Name, e.emp_id, e.first_Name, e.title, e.picture bo'yicha guruh; e.last_Name, e.first_Name oJSON.keyforcursors = "items" * JSON ma'lumotlarini va xususiyatlarini qaytarib yuboring oResponse.ContentType = "application / json; charset = utf-8" oResponse.Write (oJSON.stringify ('SearchResults')) oResponse.Flush lcHTMLout = [] ENDPROC ******* ************************************************** *************** ENDDEFINE

Adabiyotlar

Tashqi havolalar