ugrás a tartalomhoz

PHP Lint

smart · 2011. Jún. 14. (K), 16.49
Sziasztok, PHP-hez keresek JSLint-hez hasonló forráskód ellenőrző programot.
(a "php -i" meghívás jó, de ennél szigorúbb kellene nekem)
Ami nagyon kellene az a deprecated függvények előhozása. (Most váltottunk PHP 5.3-ra és meglepett a sok "elavult" függvény hívásaim)
Előre is köszönöm a válaszokat!
 
1

php -d error_reporting=-1 -d

Tyrael · 2011. Jún. 14. (K), 17.22
php -d error_reporting=-1 -d display_errors=On -l foo.php

ha van a fajlban barmilyen forditasi idoben eszlelheto hiba(error, deprecated, etc.), akkor ki fogja neked irni.

Tyrael
4

Re: php -d ....

smart · 2011. Jún. 14. (K), 18.03
Valószínűleg én nézek valamit nagyon félre, de hiába adom meg ezeket a paramétereket, a válasz továbbra is az, hogy: No syntax errors detected in ereg.php

Nekem nem egészen tiszta, hogy jelen esetben mi a fordítási idő, és mi a futási idő? Merthogy ha eregnemisletezik -re átnevezem az ereg függvényemet, akkor sem kapok hibát. Persze, ha futtatom a php fájlt, akkor megkapom az undefined function hibaüzenetet, de a php -l nem ad hibát.
6

arra valaszoltam, miszerint

Tyrael · 2011. Jún. 14. (K), 22.48
arra valaszoltam, miszerint nem dobja ki a php -l a deprecated jellegu hibakat.
forditas vs. futasi ido:
http://www.slideshare.net/sebastian_bergmann/php-compiler-internals

a lint onmagaban vizsgal egy fajlt, es csak szintaktikai ellenorzest vegez, ezert azt nem tudja kiszurni, hogy egy nem letezo fuggvenyre hivatkozol (hiszen lehet hogy a fajl amit vizsgalsz, az olyan helyen van include-olva, ahol definialt ez a fuggveny)

futas ideju ellenorzesre nem valo statikus kodanalizis, erre irjal inkabb teszteseteket.

Tyrael
7

Ezt nem teljesen értem: van

H.Z. v2 · 2011. Jún. 15. (Sze), 06.04
Ezt nem teljesen értem: van byte code compilere, de ezt csak a lapok betöltésekor alkalmazzák? Miért? Nem csökkentené a PHP gépigényét, ha előre lehetne fordítani a kódot, a'la java?
Megnéztem: hacsak nem memóriában rejtegeti, nem tárol lefordított kódot sehol a PHP. (konkrétan: strace-szel megnéztem, milyen file-okat nyitogat az apache, mikor megjelenít egy PHP lapot)
8

igy mukodnek az interpretalt

Tyrael · 2011. Jún. 15. (Sze), 09.44
igy mukodnek az interpretalt nyelvek, futasidoben "forditja" a kodot:
http://en.wikipedia.org/wiki/Interpreted_language
termeszetesen gyorsabb a vegrehajtas, ha nem kell eloallitani a bytecode-ot, ehhez lehet hasznalni opcode cachet (APC, xcache, Zend Optimizer, PHP accelerator, Zend Optimizer+, etc.), vagy befordithatod opcode-ba a kodot pl. bcompiler-rel.

Tyrael
12

Ezt értem, mi több, nem is

H.Z. v2 · 2011. Jún. 15. (Sze), 20.10
Ezt értem, mi több, nem is újdonság, hiszen (talán) már a Spectrum/Commodore BASIC is valahogy így működött, de pl. a perl biztosan... :-)

Csak a PHP esetében nem látom az értelmét, hogy miért kell ragaszkodni a forráskódként történő futtatáshoz, miért nem alapszolgáltatás, hogy befordítom, mint egy java programot és máris megspóroltam egy erőforrás igényes lépést, ami minden oldalletöltéskor végrehajtódik. Ha jól emlékszem, az általad felsorolt szoftverek nem részei a PHP-nek - a Zend optimizer meg mintha fizetős is lenne)

Hozhatnám példának a pythont, ami a libeket (időnként) .pyc file-ban tárolja és csak akkor fordít, ha úgy látja, a forrás változott a bytecode-hoz képest. Mibe került volna egy ilyen lépés a PHP fejlesztők részéről, már a kezdet-kezdetén? Ezen értetlenkedek. (vagy valami kimaradt a wiki-s link olvasásakor)
14

Ilyen a nyelv

Poetro · 2011. Jún. 15. (Sze), 20.53
Ilyen a PHP nyelv, és futtatási környezet. Más nyelvek másképp működnek. Használhatsz más nyelveket, ha nem tetszik az, ahogyan a PHP működik. Mellesleg a JavaScript is hasonlóan működik ebben a tekintetben, mint a PHP, azaz nem kell fordítani, mégis többször gyorsabban fut.

Ha jól emlékszem, az általad felsorolt szoftverek nem részei a PHP-nek - a Zend optimizer meg mintha fizetős is lenne)

Miért zavar téged, hogy fizetős a Zend Optimizer+? Java világban is van rengeteg fizetős csomag / alkalmazás.

Hozhatnám példának a pythont, ami a libeket (időnként) .pyc file-ban tárolja és csak akkor fordít, ha úgy látja, a forrás változott a bytecode-hoz képest.

Mindegyik opcode cache így működik, csak nem tárolja fájlban, hanem memóriában a fordított kódot.
15

Szerveroldali JS-t eddig hány

H.Z. v2 · 2011. Jún. 15. (Sze), 21.20
Szerveroldali JS-t eddig hány helyen láttál működni? Én még a saját szervereimen sem. ;-)

Egyébként nem az zavar, hogy fizetős bármelyik optimalizáló szoftver, hanem az, hogy mindez miért nem alap szolgáltatás a PHP-ben. Benne van a futtatóban, nem kerülne szinte semmibe a fejlesztőknek, hogy kiemeljék olyan szintre, hogy csak akkor elemezgessen/fordítson, amikor feltétlenül szükséges. A memóriába töltés egy bizonyos pontig OK lenne (strace alapján még ezt sem teszi meg), de nem feltétlenül áll rendelkezésre elég memória. Szóval nem értem, de nincs is nagy jelentősége. (egyébként sem akarok hosszú távon leragadni a PHP mellett, ez inkább csak egy mellékvágány: kicsit tanulgatom, amíg nem találok olyan szolgáltatót, ahol legalább java servleteket tudok futtatni, akkor visszamegyek a java-hoz, tomcathez)
16

Szerver oldali JS

Poetro · 2011. Jún. 15. (Sze), 21.26
Személy szerint én több helyen láttam működni, és a szerver oldali JS kb. egyidős a PHP-vel, ugyanis a 1996-ban megjelent Netscape Enterprise Server 2.0-ban már volt. Természetesen azóta volt már rengeteg megoldás a témára. A Wikipédián van is egy összehasonlítás a megoldásokról.

Az APC pedig tervek szerint a PHP része lesz valamelyik elkövetkező változatban.
17

Bocs, kimaradt a "free"

H.Z. v2 · 2011. Jún. 15. (Sze), 21.59
Bocs, kimaradt a "free" szócska. :)
Szóval ingyenes szolgáltatókra gondoltam.

Visszatérve a PHP témára: én ott akadtam el, hogy első perctől kezdve miért nem került bele ez a funkció a PHP-be? Mert az, hogy a 6-os (??? 5.4-es? kicsit kavarodnak a verziószámok :) ) talán, majd, egyszer bevezeti az már majdhogynem a halottnak a csók kategória szvsz.
Na mindegy, jelentősége nincs, csak picit bosszantó. :)
18

HipHop

solkprog · 2011. Jún. 15. (Sze), 23.47
ezt a szálat ha lehet akkor még jobban offolnám:
(ha netán nem ismernéd akkor) a Facebook kiadott egy "csodát" (forráskód átalakított) HipHop néven. vess rá egy pillantást. (ha ennyire mániád a sebesség).
(egyszer talán a Zend-es fiúk is elmennek a sebesség irányába, előbb szedjék csak rendbe a nyelvet magát...)
19

Sebesség mániáról szó sincs.

H.Z. v2 · 2011. Jún. 16. (Cs), 05.41
Sebesség mániáról szó sincs. Csak üzemeltetőként szoptam eleget azzal, hogy a rendszereink rendre kinőtték az összes alájuk tolt vasat (nem egyszer a CPU teljesítmény volt kevés) és akkor látok egy olyat, mint ez az eset is, hogy egy sok milliószor lefutó kódot simán ki lehetett volna venni a futtató környezetből, de ki tudja miért, nem tették.
Más téma, hogy magától a nyelv egy-két hülyeségétől is a falnak megyek (pl. a "következetes" névhasználat a beépített függvények esetében :D)
No mindegy, részemről lezártam a témát. :)

ui: facebook? Az mi? ;)
uíííí2: megtaláltam a github-on, ez a fb-s dolog valami egészen másról szól. (PHP -> C++ konverzió messze nem az, ami miatt "reklamáltam")
20

mintha szandekosan ertened

Tyrael · 2011. Jún. 16. (Cs), 10.38
mintha szandekosan ertened felre, amit neked irnak.
egyreszt solkprog ugy fogalmazott, hogy
vess rá egy pillantást. (ha ennyire mániád a sebesség)

tehat nem irta, hogy arrol szol, amit te szeretnel, masreszt viszont te azt irtad feljebb, hogy
Benne van a futtatóban, nem kerülne szinte semmibe a fejlesztőknek, hogy kiemeljék olyan szintre, hogy csak akkor elemezgessen/fordítson, amikor feltétlenül szükséges.

erre a HipHop pontosan alkalmas, osszesen 1szer, az alkalmazas forditasakor parse-olja a fajlokat, utana osszerak belole egy darab binarist, ami inditaskor betolt mindent a memoriaban, aztan jonapot.

Tyrael
24

Persze, de hogy jött le

H.Z. v2 · 2011. Jún. 16. (Cs), 13.44
Persze, de hogy jött le abból, amit írtam, hogy "mániám a sebesség"? ;)
(a "mánia" nálam azt jelenti, hogy mindent félredobva, csak a sebesség és a sebesség... azért itt nem tartok)

Majd megnézem újra, de én csak addig jutottam, hogy ez a bigyó a PHP-ből generál egy C++ forrást, az eredménnyel meg csináljak, amit akarok. (ettől kezdve, tképp az apache modulból futó PHP programot CGI-vé konvertálva, ha nem tévedek)
De mindegy, mondom, hogy nincs jelentősége, csak bosszantott a dolog.
28

Persze, de hogy jött le

Tyrael · 2011. Jún. 16. (Cs), 16.08
Persze, de hogy jött le abból, amit írtam, hogy "mániám a sebesség"? ;)

gondolom abbol, hogy interpretalt nyelvbe szeretnel defaultbol compile-olt mukodest.

Majd megnézem újra, de én csak addig jutottam, hogy ez a bigyó a PHP-ből generál egy C++ forrást, az eredménnyel meg csináljak, amit akarok.

ennel azert picit tobbet csinal
https://github.com/facebook/hiphop-php/wiki/running-hiphop

De mindegy, mondom, hogy nincs jelentősége, csak bosszantott a dolog.


ok, akkor zarjuk itt le ezt a szalat.

Tyrael
31

gondolom abbol, hogy

H.Z. v2 · 2011. Jún. 16. (Cs), 16.39
gondolom abbol, hogy interpretalt nyelvbe szeretnel defaultbol compile-olt mukodest.


Ezt valaki félreértette...
Épp itt volt szó róla, hogy a PHP is, mint általában az interpreterek, végez lexikális analízist és bytecode-ra fordítást. Én pusztán azt nehezményeztem, hogy ezt a két menetet miért nem lehetett kitenni egy külön progiba(is), a'la javac... Ott a program a PHP-ben, csak egy parancssori interface kellene hozzá. Gépikódú binárisra még nem vágytam. :)
No. Akkor thread closed. ;)
21

PHP hülyeségei

solkprog · 2011. Jún. 16. (Cs), 11.21
Tyrael 20. hozászolásában elmagyarázta hogy gondoltam.

viszont:
A PHP "hülyeségeitől" én is néha falnak megyek (bár már megszoktam), de ennek valószínűleg történelmi okai vannak. A PHP még talán Perl-ként script gyűjteményként kezdte, majd lett C függvénykönnytár, és csak olyan PHP3-4 körül került a Zend alá. Ehhez még hozzájön hogy egy jó ideje nyílt a forráskódja, így (elvileg) bárki (főleg régen) hozzáfejleszthet bármilyen névadási sémával lefejlesztett függvényeket.
(a fentieket ne vegyétek készpénznek, mert rég olvastam utána, és lehet vannak benne pontatlanságok)
-Ezek a névadási anomáliák inkább problémája a PHP-nek mind az hogy néhány üzemeltető a nativ PHP megoldásnak a sebességével nem elégedett. (mert az utóbbira van kismillió megoldás). De egy alapértelmezett teljes körű UTF-8 használat se lenne rossz. (ami ha jól tudom akkor pont azért várat magára, mert nagyon belassítaná a PHP-ét..)
22

http://www.php.net/manual/en/

Tyrael · 2011. Jún. 16. (Cs), 12.21
http://www.php.net/manual/en/history.php.php
http://www.php.net/manual/phpfi2.php
a php-t (pontosabban akkor meg PHP/FI-t) Rasmus hozta letre 95ben, valoban eredetileg perl script gyujtemenykent indult, de ez meg azelott volt, hogy megnyitotta volna a kodot, addigra mar C-ben volt minden AFAIK.
ezutan ujrairta jott a PHP/FI version 2.0, ami egy komplett ujrairassal jart, majd Zeev es Andi ujrairta az egeszet, es Rasmussal egyeztetve ugy dontottek, hogy a kozosseg szetforgacsolasa helyett kozosen viszik tovabb ezt a verziot, es gyakorlatilag ebbol lett a PHP 3.
A PHP 4 az megint gyakorlatilag egy ujrairast jelentett, megszuletett a Zend Engine, ami a php azon resze, ami a php fajlok ertelmezeseert, vegrehajtasaert felelos, illetve a memoriaallokaciot vegzi:
http://www.slideshare.net/sebastian_bergmann/php-compiler-internals/3
A PHP 5 -ben debutalt a Zend Engine 2, es azota csak kisebb nagyobb foltozgatasok tortentek, a levlista alapjan most ugy tunik, hogy Andiek nem szeretnek, ha a tovabbiakban tul sokat valtozna maga a nyelv. :/

az inkonzisztens fuggvenyneveknek tenyleg tortenelmi okai vannak, es annyira nem nagy problema, mint amennyit az okozna, hogyha ezt kijavitanak es emiatt rengeteg kodot migralni kellene.
ettol fuggetlenul szerintem megerne meglepni valami major(php 6, ha lesz meg valaha) esetleg minor verziovaltas kapcsan (5.X)

a nativ unicode támogatás, illetve a PHP6 kudarcainak okairól érdemes megnézni Andrei slideját:
http://www.slideshare.net/andreizm/the-good-the-bad-and-the-ugly-what-happened-to-unicode-and-php-6

ha valaki nem tudná, akkor ő volt a unicode élharcos a php projecten belül, és a 6os verzió gyakorlatilag azért futott zátonyra, mert elakadt a unicodeosítás az érdeklődés hiányára való tekintettel és emiatt nem lehetett kiadni a 6os verziót, ami ugye frusztrálta a többi fejlesztőt is, ami miatt még kevesebbet dolgoztak a 6os ágon.

Tyrael
32

köszi a korrigálást

solkprog · 2011. Jún. 16. (Cs), 18.02
Köszi a korrigálást! -a linkekért külön köszi. (90 diát, ha lesz időm átnyálazom!)

Ahogy észreveszem te elégé benne vagy a Zend-es berkekben. Így lenne két kérdésem, (ha véletlenül olyat kérdeznék amit a linket oldalakon le van írva akkor sorry)
-Legújabb info PHP 6-os verzióról? Annyi mindent lehetett az évek során olvasni róla, hogy engem teljesen összezavart. A legújabb info mi? Körülbelül mikorra ígérik, és körülbelül milyen tartalommal?
-inkonzisztens függvénynevek átírása azért távlati célként kivan tűzve? (sőt én azt se bánnám ha kidobálnák a beépített függvényeket a nyelvből, és mindenre megírnák az osztály/objektum alternatívát... ami azért szép lassan folyamatban van... Jól érzem én ezt kívülről hogy ilyen irányba akarnak elmenni?)
33

PHP6 nem haladt a fejlesztés,

Tyrael · 2011. Jún. 16. (Cs), 21.20
  • PHP6
    nem haladt a fejlesztés, nagyon messze voltak még mindíg a kiadható stádiumtól (elsősorban a beígért unicode miatt akadtak el, az nem haladt, viszont anélkül nem lehetett kiadni mert annyira be lett harangozva), amit lehetett visszaportoltak az 5-ös ágba, ebből lett az 5.3-as kiadás, illetve néhány dolog a (ha minden igaz hétfőn alfa verzióval megjelenő) 5.4-es verzióban lesz elérhető.
    tehát gyakorlatilag a fejlesztés most ott tart, ami újdonság az 5.4-es verzióban megjelenik, array dereferrencing, traits, illetve végre el lesz távolítva egy csomó legacy cucc, mint register_globals, safe_mode, etc.
    http://svn.php.net/viewvc/php/php-src/branches/PHP_5_4/NEWS?view=markup
    hogy mi lesz a következő verzió az 5.4 után, azt még nem tudni. a végtelenségig nem lehet major verziókat léptetni, viszont előbb utóbb el kell dönteni, hogy kijöjjenek egy olyan 6os verzióval, ami már nem azokat a feature-öket tartalmazza, amit anno beígértek, vagy esetleg egyszerűen átlépik ezt a verziót és nem lesz 6os sosem.
  • inkonzisztens függvénynevek:
    igazából többször felmerült az internals levlistán, de nem sok támogatója van a core fejlesztők közül az ötletnek, inkább a php-ban fejlesztő olvasók szokták néha panaszolni.
    nem szerepel ennek a megoldása semmilyen todo listán, szóval nem számítanék rá nagyon. :(


Tyrael
34

köszi

solkprog · 2011. Jún. 16. (Cs), 22.12
köszi a választ.

PHP 6-ot sajnálom:(
anno PHP 5.3 kiadási közleménye után illetve most PHP 5.4 listájának olvasása közben végre megint kezdem érezni hogy fejlődik a PHP. Még ha különösebb távlati célok és irány nélkül.
26

Teljeskörű UTF-8?

H.Z. v2 · 2011. Jún. 16. (Cs), 13.51
Ezt úgy kell érteni, hogy változó- függvény- stb. nevekben is lehet UTF-8 karaktereket használni? (gondolom, igen)
Ha csak ennyi, akkor nem csodálom, hogy a fejlesztők nem törik magukat érte.
------
27

stringek

Poetro · 2011. Jún. 16. (Cs), 14.16
Az UTF-8 támogatás a stringek kezelésére értendő. Azaz pl. az strlen a string hosszát adná vissz, nem azt, hogy mennyi bájtot foglal. Hasonlóan a string daraboló függvényekre, amelyek most hajlamosak eltörni karakter közben a szövegeket (substr és társai). De így van ez az összes függvénnyel, ami stringekkel foglalkozik, és nincs kifejezetten kikötve, hogy ez bizony kezel UTF-8-at.
29

$árvíztűrő_tükörfúrógép=123;

Tyrael · 2011. Jún. 16. (Cs), 16.11
$árvíztűrő_tükörfúrógép=123;
echo $árvíztűrő_tükörfúrógép;
ez már most is így van

ha kíváncsi vagy a részletekre (szerintem nem vagy, mert akkor nem flegmáznál, hanem megnézted volna a linkeket, amiket adtam), akkor itt le van írva, hogy mi volt az eredeti terv, és ez mit jelentett volna pontosan a userland szempontjából:


Tyrael
30

Tény: annyira nem érdekel a

H.Z. v2 · 2011. Jún. 16. (Cs), 16.38
Tény: annyira nem érdekel a dolog, hogy keresgélni kezdjek utána. Ha valaki ingert érez, hogy válaszoljon, akkor köszönöm, de ennél jobban nem izgat. (java-ban külön kiemelték, hogy olyan mértékben támogatja a unicode-ot, hogy akár változónévként is... ebből feltételeztem, hogy ez más nyelveknél is problémás lehet)
De korábban is írtam: számomra a PHP eleve egy kényszerpálya, nem akarok túl sok energiát belefektetni.
Beszélgetni meg szeretek, ha van kivel, miről. Ha mindenki tartaná magát ahhoz, hogy a kérdéseinek, problémáinak utánajár, akkor kb. kihalna az összes fórum.
Írom ezt úgy, hogy más fórumokon játszottam egy darabig: valaki feldobott egy kérdést, én meg google-n megkerestem a választ. Az esetek 98%-ban gond nélkül megtaláltam a megoldást.
23

nem fizetős

joed · 2011. Jún. 16. (Cs), 12.36
A Zend Optimizer+ nem fizetős, elérhető a Zend Server stack-el.
25

Letöltés -> jobb felső

H.Z. v2 · 2011. Jún. 16. (Cs), 13.47
Letöltés -> jobb felső sarok:

Next Steps

* Download Free Trial

Nekem ebből az jött le, hogy fizetős, ezért írtam.
9

Az a baj, hogy elbeszélünk

smart · 2011. Jún. 15. (Sze), 11.39
Az a baj, hogy elbeszélünk egymás mellett... sajnálom, hogy bekavartam a futás/fordítás idő témát.

Tehát, amit írni akartam, az az, hogy a "<?php ereg(); ?>" tartalmú fájlt gond nélkül elfogadja a php -l akármilyen hibajelzéssel látom el. Erre írtam, hogy nem tudom, hogy a fordítási idő mit jelent, de ne is menjünk bele!

A kérdésem inkább az, hogy egy "jól bekonfigurált" rendszernél itt hibát kellene, hogy dobjon, vagy csak és kizárólag szintaxist vizsgál a rendszer, és az elavult utasításokat nem fogom tudni ÍGY megkapni?
11

igen, a fuggvenyhivasok csak

Tyrael · 2011. Jún. 15. (Sze), 11.48
igen, a fuggvenyhivasok csak a meghivas pillanataban dobjak a deprecated uzenetet, ezert ezeket csak akkor latod, ha meghivod oket, a php -l nem futtatja a kodot.
itt megtekintheted az 5.3-ban deprecated-de tett fuggvenyek listajat.

Tyrael
3

PHPMD

janoszen · 2011. Jún. 14. (K), 17.39
Én a PHPMD-t nézném meg a helyedben, az egészen jó dolgokra szokott üvölteni.
5

PHP_CodeSniffer pear csomag

firith · 2011. Jún. 14. (K), 18.07
PHP_CodeSniffer pear csomag nem tud ilyet? bocsi most nem tudom megnézni, mobilon vagyok
10

Re: PHP_CodeSniffer

smart · 2011. Jún. 15. (Sze), 11.42
Feltelepítettem ezt, és elsőre nekem úgy tűnik, hogy itt sem tudok szemantikát ellenőrizni. (mondjuk nagyon sok paramétere van, így még nézegetem), de elsőre ahogy nézem, én nem ezt keresem!

(a többiek ajánlatát is köszönöm, sajnos csak szabadidőben tudok ezekkel foglalkozni, így lassan haladok, de majd nézegetem sorba azokat is!)
13

http://www.icosaedro.it/phpli

H.Z. v2 · 2011. Jún. 15. (Sze), 20.12
http://www.icosaedro.it/phplint/
Itt találtam egy PHPlint nevű bigyót...