ugrás a tartalomhoz

PHP::Interpreter - futtassunk PHP-t Perlből

Hojtsy Gábor · 2005. Aug. 22. (H), 19.23
Bábeli zűrzavar című cikksorozatunkban kezdtünk el foglalkozni azzal a kérdéssel, hogy mit tehetünk, ha több nyelvet is fel szeretnénk, vagy valamilyen okból fel kell használnunk egy projekt során. Nos, a sorozat egyelőre csak az első résznél tart, a konkrét megoldásokat bemutató második és esetleges további részek még váratnak magukra. A nemrég megjelent PHP::Interpreter azonban annyira izgalmas újdonság, hogy bemutatásával nem várhatjuk ki a sorozat következő részeinek megjelenését.

Néhány napja íródott blog bejegyzésében hívta fel a figyelmet David Wheeler arra, hogy a népszerű Bricolage nevű tartalomkezelő legújabb változata immár támogatja a PHP-ben készült sablonok kialakítását is. A lehetőséget George Schlossnagle segítségével alakíttatták ki, és augusztus eleje óta mindenki számára elérhető CPAN modulként PHP::Interpreter néven. A PHP::Interpreter nem más, mint egy PHP 5 feldolgozó motor Perlhez, lehetővé téve PHP kódok végrehajtását Perlből, illetve Perl komponensek elérését PHP szkriptekben.

A következő Perl kód lehetőséget ad a parancssori paraméterben megadott PHP szkript végrehajtására:

use strict;
use PHP::Interpreter;
my $php = PHP::Interpreter->new;
$php->include(shift);
És a parancssorban akár a következő szkriptet is megadhatjuk, a példa erejéig a Perl DBI modulját használva adatbázis műveletek végrehajtására. A példa David Wheeler-ről származik:

<?php
  $perl = Perl::getInstance();
  $perl->eval("use DBI");
  $perl->eval("use DateTime");
  $dbh = $perl->call("DBI::connect", "DBI", "dbi:SQLite:dbname=dbfile");
  $dbh->do("CREATE TABLE foo (bar TEXT, time DATETIME)");
  $now = $perl->call("DateTime::now", "DateTime");
  $ins = $dbh->prepare("INSERT INTO foo VALUES (?, ?)");
  $ins->execute("This is a test", $now);
  $sel = $dbh->prepare("SELECT bar, time FROM foo");
  $sel->execute();
  $a = array("foo", "bar");
  foreach ($sel->fetch() as $val) {
      echo "$val\n";
  }
  $sel->finish();
  $dbh->do("DROP TABLE foo");
  $dbh->disconnect();
?>
Ez amellett, hogy a Bricolage sablonjaiként most már PHP 5 szkriptek is használhatóak, az együttműködés teljesen új lehetőségeit nyitja meg a Perl és PHP fejlesztők számára.
 
1

Perl

tiny · 2005. Aug. 22. (H), 19.28
Eddig a Perl csak elméleti szinten vonzott, de ha ez elterjed, biztos nekiállok gyakorolgatni is. Frankó :).
Mr.Tiny
2

miért jó a perl?

Anonymous · 2005. Aug. 22. (H), 23.48
Szóval miért is kéne preferálni a perlt? Mi az amiben ennyire egyértelműen jobb mint a php?
3

ja

Anonymous · 2005. Aug. 22. (H), 23.51
A perlel valamkor 3 éve dolgoztam egy projekt kapcsán és nem nagyon nyűgözött le. Ha a Ruby a syntax heaven akkor a perl a hell :) Nézed percekig és nézed.. Szóval fasza meg minden de tényleg miért is?
4

Elterjedtebb, de nem jobb.

saxus · 2005. Aug. 23. (K), 00.04
Én se vagyok túlzottan elragadtatva a Perltől, de talán az a nagy előnye, hogy bizonyos helyeken elterjedtebb. A linux disztribúciókban szinte kivétel nélkül benne van, aztán ha már ott van, miért ne használják? És használják is sok helyre, például parancssori scriptekre, IRC botokra..., ahol a PHP csak most kezd beleerősíteni (saját meglátásom szerint).

Amúgy minden másra ott a PHP. Még a Perles dolokra is :)
5

Modulok

Bártházi András · 2005. Aug. 23. (K), 07.00
A Perl szintakszisát szokták szidni, s bár én szeretem, de valóban tud kusza lenni. Különben lehet benne nem kusza programot is írni, programozótól függ. Ez szubjektív. Az viszont objektív, hogy sokkal tömörebb kódot tudsz benne írni, ha szövegfeldolgozásról, vagy ilyen-olyan algoritmusokról van szó, köszönhetően például a map-eknek és a grep-eknek.

A valódi és biztos előnye, hogy "nincs az a nyelv" (tényleg, van az a nyelv?), amihez ennyi modul lenne, ilyen gazdag témaválasztékban.

-boogie-
6

Ezért jó a perl

Anonymous · 2005. Aug. 23. (K), 11.51
http://www.tnx.nl/php

Bár néhol eléggé igazságtalan a PHP-val szembem, de nagyrészt igaza van. Szerintem a fenti oldalon leírt dolgok miatt jobb a perl.
Igaz, PHP5-öt még nem ismerem, az akár még jó is lehet (de nemrég tudtam meg, hogy a unicode support kimaradt belőle).

jazzkutya
7

CPAN

Hojtsy Gábor · 2005. Aug. 23. (K), 11.55
Azt a PEAR fiúk is elismerik, hogy a CPAN sokkal kompletteb és sokoldalúbb modul készletet biztosít. Egyáltalán nem véletlen, hogy a fenti példa is egy Perl modul használatát mutatja be PHP-ből és nem valami alap Perl funkcióval brillírozik.
8

Nem tudom, érdekel milyen

tiny · 2005. Aug. 24. (Sze), 19.12
Mivel csak olvasgattam egyszer-kétszer a Perl-ről, ezért fogalmam sincs miben jobb vagy miben rosszabb. De csak van, amit Perl-el könnyebb vagy amiben a Perl jobb. Ezért írtam.
Mr.Tiny