ugrás a tartalomhoz

PHP emulálás Javascripttel

zzrek · 2013. Nov. 12. (K), 19.55
Sziasztok!

A PHPJS projekt oldalán olvastam, hogy terveznek olyasmit, hogy JS motorral a böngészőben futtatnak PHP kódot.
Engem érdekelne ilyesmi, tudtok hasonló projektet ami legalább részben működik?

Köszi!
 
1

Nem tudok,

Pepita · 2013. Nov. 12. (K), 23.41
viszont engem a konkrét ok érdekelne, hogy minek ilyen?

Neked mire kéne?
Mert magamat még megérteném (:)), mert PHP-ben sokkal erősebb vagyok, mint JS-ben, de ez nem lehet indok arra, hogy erőforrást pazarolj. És valószínűleg egy ilyen igen erőforrásigényes, úgyhogy mobilon már felejtős is (akksi).

Tehát: miért jó ez?
3

Több oka is van

zzrek · 2013. Nov. 13. (Sze), 00.53
Egyrészt érdekes dolog lenne, ahogy a PHPJS-srácok is írják. Másrészt egyes dolgokat könnyebb lenne debugolni. Vannak olyan esetek, hogy a kód futhat kliens és szerver oldalon is, és erre is lehetne ez egy alternatíva. Olyan speciális esetek is lehetnek, amikor a kliensek átvállalhatnának feladatot a szervertől, ebben is segíthet.
Alapvetően az is zavar, hogy különböző nyelveken kell kódolni a kliens és szerver oldalon és ebben is egy kis segítséget jelentene. Jó lenne egy PHP-JS vagy JS-PHP átfordító is erre, nem feltétlenül futásidejű cucc.

De legalábbis kipróbálnám.
5

Vannak olyan esetek, hogy a

Poetro · 2013. Nov. 13. (Sze), 01.13
Vannak olyan esetek, hogy a kód futhat kliens és szerver oldalon is, és erre is lehetne ez egy alternatíva.

Akkor futtass mindkét oldalon JavaScriptet.
Olyan speciális esetek is lehetnek, amikor a kliensek átvállalhatnának feladatot a szervertől

Milyen speciális esetekre gondolsz? Vannak olyan feladatok, amiket nem tudsz a szerveren megvalósítani, csak kliens oldalon, és van amit meg kliens oldalon nem tudsz megvalósítani, csak szerver oldalon. Ha valamit mindkét oldalon meg tudsz valósítani, akkor a legjobb, ha azt szerver oldalon valósítod meg.
6

Jó lenne

zzrek · 2013. Nov. 13. (Sze), 09.44
Ha rendelkezésre állna mindenhol szerver oldalon is JS, akkor természetesen ez alternatíva lenne.
Jó lenne, ha a V8Js (vagy valami még fejlettebb) alaprészévé válna a PHP csomagoknak, és akkor az olcsó shared hostokon is lehetne JS kódot futtatni.
(...)
Előfordulhat, hogy a szervert tehermentesíteni lehetne kliens oldalon. Egyfajta elosztott számítási kapacitásra gondoltam. Speciális témán gondolkodok, nem fejteném ki bővebben, de érdekelne ha lenne ilyen lehetőség (PHP-ben írt JS feldolgozó is tetszene, de inkább valamilyen szintaxis átfordító, még úgy is, ha csak korlátozott képességű. Eredetileg ezeket nézegettem, amikor beugrott, hogy akár fordítva is lehetne, PHP-t futtatni kliens oldalon -- ha van ilyen, akkor kipróbálnám, a cél, a szerver tehermentesítése így is megoldható.)
8

PHP-ban JS-t elmeletileg

vrnagy · 2013. Nov. 13. (Sze), 11.41
Szerintem a V8Js nem valoszinu, hogy a PHP core reszet fogja kepezni a kozeljovoben.
10

Sejtettem

zzrek · 2013. Nov. 13. (Sze), 12.51
Sejtettem, sajnos.
7

Kliens oldal

Poetro · 2013. Nov. 13. (Sze), 11.30
Amit én csinálok nap mint nap, a szervertől (ami nem PHP [szerencsére] rengeteg ok miatt, például teljesítmény, hordozhatóság, futtathatóság) érkező adatokat kliens oldalon renderelem. Itt rengeteg kliens oldali feldolgozásról van szó, az adatok átcsoportosításán át, elemzésén keresztül a nagyon változatos megjelenésig (canvas, HTML). És mivel az interaktivitás is fontos szempont, az átvivendő adat mennyisége mellett, ezért szerver oldalon igazából lehetetlen lenne megvalósítani hatékonyan, hasonló adatátvitel mellett (vagy akár csak párszorosát figyelembe véve is).
A legtöbb esetben a kliens csak megkapja a konfigurációt, és az adatot, és maga találja ki a rendelkezésre álló hely, a konfiguráció és az adatok függvényében, hogy hogyan is kellene azt megjeleníteni. Ha ehhez hozzá vesszük az adatokkal és a megjelenítéssel kapcsolatos interakciót, akkor máris látszik, hogy ugyanezt szerver oldalon közel lehetetlen lenne megcsinálni, vagy legalábbis nagyon nem lenne hatékony, ráadásul kifejezetten erőforrás-pazarló lenne.

Mondjuk nem is értem, miért pont PHP lenne a megfelelő nyelv a kliens oldalon való futtatásra. A beépített függvénytára stringek, tömbök és objektumok kezelésére és manipulálására eléggé gyenge lábakon áll, kezdve a fura és nem következetes paraméterezéstől a függvények elnevezésén át a unicode szövegek kezelését is beleértve eléggé vegyes érzelmeket keltenek még a PHP hívők között is.
9

Egyetértek

zzrek · 2013. Nov. 13. (Sze), 12.50
Egyetértek, én is sokkal jobban kedvelem a javascriptet, ezért is gondolom azt, hogy a PHP nyithatna feléje (végülis ha a JS feldogozó nyílt formátumú, akkor a PHP szabadon beépíthetné, ha a stabilitását menedzselnék) (paradigmát is válthatna a PHP, amiben akár több nyelvet is támogathatna; nem az lenne a lényeg, hogy a saját nyelvet fejlesszék, hanem ami az erőssége: hogy mindenhol elterjedt)
Egyelőre azonban (az én esetemben) csak ez a lehetőség maradt, valamilyen módon idomulni a PHP-hez. Talán az is megfelelne, ha a PHP egy butított változatát (PHPASM ?) egy az egyben JS-sé lehetne alakítani (valamilyen parserrel), persze fordítva is lehetséges (korlátozott JS átalakítása PHP-vé).

Most csak számbaveszem az alternatívákat. Ha semmi bejáratott sincs, majd kigondolok valamit és megoldom magam valahogy.
2

Hohó, más dolog PHP

MadBence · 2013. Nov. 13. (Sze), 00.09
Hohó, más dolog PHP értelmezőt írni, és más dolog a PHP függvényeit átportolni. Utóbbi nyilván könnyebb (csak kevésbé hasznos), másrészt az elsőnek komoly korlátai vannak (többek között a JS csak korlátozottan tudja olvasni a fájlrendszert).
4

Mire

Poetro · 2013. Nov. 13. (Sze), 01.10
Csak úgy kíváncsiságból, mire használnád a lehetőséget, hogy PHP kódot futtathatsz a böngészőben? Mármint a JavaScript lehetőségeire a tömb és objektum kezelésben szerintem elég erős a PHP-hoz képest, szóval nem tudom miért lenne jó PHP kódot futtatni.
11

kód kliensen és szerveren is

zzrek · 2014. Már. 1. (Szo), 12.14
Bocs, hogy felmelegítem ezt a témát, de még nem jutottam dűlőre (egyelőre nem sürgős).
Más oldalról közelítem meg: ugyanazt a kódot szeretném futtatni js-ben a böngészőben és php-n a szerveren. Ilyen esetben van valami javaslatotok?
Köszi!
12

JavaScript

Poetro · 2014. Már. 1. (Szo), 14.15
Mondjuk használhatnál szerver oldalon is JS-t. Vagy generálhatnád a JavaScript kódot PHP-val.
13

php

zzrek · 2014. Már. 1. (Szo), 17.24
A szerver oldalon csak PHP van, sajna nem válogathatok.
Hogy érted azt, hogy generáljam a JS kódot PHP-val?
A kód futtatását akarom mindkét helyen, nem az eredményét. Legyen egy függvény, ennek bemenete és kimenete, ugyanarra a bemenetre ugyanazt a kimenetet produkálja, bárhol futtatom (kliensen vagy szerveren).
14

teszt

Poetro · 2014. Már. 1. (Szo), 20.16
Akkor írj rá tesztet mindkét nyelven. Vagy nem teljesen értem a problémát.

A szerver oldalon csak PHP van, sajna nem válogathatok.

A szerver oldalon van JavaScript is, és válogathatsz is. Van több JS motor is szerver oldalon, amin futtathatod a kódodat.
Hogy érted azt, hogy generáljam a JS kódot PHP-val?

Akkor ne PHP-val generáld, hanem bármilyen másik nyelvvel. Van legalább 100 nyelv, amit lehet JavaScriptre fordítani.
Mondjuk például a Haxe-et lehet JS-re és PHP-ra is fordítani.
15

a legegyszerűbb módszert keresem

zzrek · 2014. Már. 1. (Szo), 23.02
írj rá tesztet mindkét nyelven

Ez azt jelenti, hogy írjam meg a kódot mindkét nyelven (nemá', hát nem triviális, hogy ez már nekem is eszembe jutott? ;-) ).
Mondjuk például a Haxe-et lehet JS-re és PHP-ra is fordítani

Ez azt jelenti, hogy írjam meg a kódot egy harmadik nyelven, amit még nem is ismerek, ráadásul tesztelhetek mindhárom nyelven.

Ez a fenti kettő nem egyszerűsítés. Az egyszerűsítés az lenne, ha a rendelkezésre álló két nyelv közül csak az egyikkel kellene foglalkozni.
Vagyis:
Vagy PHP-ben írom azokat a kódrészeket amiket a szerveren és a kliensen is akarok futtatni, vagy JS-ben.

A szerver oldalon van JavaScript is, és válogathatsz is.

Mint említettem, számomra sajnos nincs lehetőség szerver oldalon egyebet használni, mint PHP-t. Ha lehetne, akkor a probléma nem létezne. Nyilván azért lovagolok a témán mert egy ilyen huszárvágással nem tudom megoldani a problémát.

A 100-as lista amit küldtél ( List of languages that compile to JS ), az tetszik, a PHP szekciónál a phype és a uniter kb azt próbálja megvalósítani ("run PHP code directly in your browser") amit témanyitáskor kérdeztem ("PHP emulálás Javascripttel"), a uniter egész pofásnak tűnik, kipróbálom.

Persze mivel a Javascriptet jobban kedvelem, jobb lenne fordítva, rá is kerestem a fordítottjára: "List of languages that compile to PHP", de persze már csak azért sem találok olyan eszközt, ami JS szintaxisból PHP-t faragna.

De azért köszi a javaslatokat, hasznos volt, a Haxe-t is megnézem mégegyszer közelebbről (egyszer már megnéztem, de elvetettem valamiért).
16

Vagy nodejs-t használsz

Kubi · 2014. Már. 2. (V), 10.57
Vagy nodejs-t használsz szerver oldalon, vagy felejtsd el az egészet és verd ki a fejedből, a végeredmény gányolás lenne.

Vannak olcsó vps-ek (én 13ezret fizetek érte egy évre), amik kb annyiba kerülnek mint egy tárhely bérlés, ott futtathatsz nodejs-t.

Ha mindenképp php-nál akarsz maradni és nem akarod megírni a kódot két helyen, akkor a közös logikát futtasd a szerveren és kérd le az eredményt ajaxal.

Amúgy, mi az a dolog, amit mindkét helyen futtatni akarsz? Nem sok ilyen létezik, form ellenőrzés, esetleg kép manipulálás, jó lenne ha elmondanád és akkor lehet valami hasznos ötletet kitalálni.
17

titok :-)

zzrek · 2014. Már. 2. (V), 11.14
A lényeg, hogy sok szerver - sok kliens, ezért nem válogathatok az eszközökben.
Ha más nem, akkor gányolok, megpróbálom a lehető legelegánsabban. :-)

Még el sem kezdtem, ezért nem akarok részletesebben beszámolni róla (nem akarom égetni magam egy olyan tervvel amit esetleg meg sem valósítok), de ha már a nagyrésze meglesz (rászánom magam), akkor egy bétatesztre meghívom a közösséget.

Csak akkor kezdek neki, ha tényleg úgy érzem, hogy jó megoldást találtam erre a problémára, mert gányolni azt nemigazán szeretnék (idegesítene). Esetleg várok, míg a helyzet mög nem változik, azt a kutyikafáját!