Ugle-sprog vil gøre PHP mere sikkert med Javascript-stil
Et nyt sprog vil gøre det mere sikkert at skrive PHP, med en syntax, som ligner Javascript til forveksling.
Det nye sprog kalder sig OWL, men må ikke forveksles med det semantiske web-sprog af samme navn.
Dets eksistensberettigelse skal bestå i at gøre PHP-programmering mere sikkert. PHP har en masse fordele, lyder det fra OWL's hjemmeside, og disse fordele er en lav indlæringskurve, bred platformsunderstøttelse og ingen build-proces - der er ikke noget at compile.
Men sproget har også nogle bagdele, lyder det. Det drejer sig om et spraglet standardbibliotek i et globalt namespace, samt stor variation i hvordan fejl håndteres, og mange faciliteter som nemt kan føre til wepapps med sikkerhedshuller.
OWL vil ændre på det ved blandt andet at gøre hver fil til sit eget namespace, uden implicitte globale variable. Der er ikke "variable variable," som er en slags eval-funktion for variabel-navne i PHP. Standardbibliopteket bruger exceptions i stedet for fejlkoder, og det tillades ikke at have database-kald, fil-operation eller system-kald i HTML-skabeloner.
Dertil organiserer OWL standard-biblioteket i moduler og klasser, og bruger Unicodes UTF-8 som tegnsæt. Man kan heller ikke bare skrive til output-strømmen med ... ?> - elementer.
På sikkerhedssiden bryster sproget sig af at kræve HTTPS i forbindelse med formular-input, dog undtaget fra den lokale server af hensyn til udvikling. Dertil kommer en string-type kaldet LockStrings, som skal sætte en stopper for injektions-angreb. Der er heller ingen null-værdi i det nye sprog.
Ny grænseflade til gammel motor
»Det er en slags ny, sikker grænseflæde øverst til den samme gamle PHP-motor nedenunder,« siger sprogets bagmand Joe Lesko til Infoworld.
»Men jeg kan godt forestille mig at flere udviklere ville vælge OWL i stedet for rå PHP, i særdeleshed i projekter, som betsår af en enkelt udvikler.«
Et eksemple på OWL kan ses herunder, taget fra projektets hjemmeside.
// Hello :) print('Hello World!'); // OWL has a familiar JavaScript-like syntax. let animals = ['squirrel', 'deer', 'sparrow']; animals.add('unicorn'); // The Web module has methods for common tasks, like // returning a complete HTML5 document. Web.sendPage({ title: 'Forestbook', description: 'The sylvan social network.', body: friendsHtml(animals), }); // Template functions let you include HTML directly // in your scripts. (With new HTML shortcut tags!) template friendsHtml(friends) { <h1>> My Forest Friends <ul> :: for (friend in friends) { <li>> {{ friend.toUpperCaseFirst() }} :: } </> }
