Sziasztok HUPtársak, boldog új évet!
Tegnap este megszállt az ihlet és gyorsan összedobtam egy prototípust egy projektre amit régóta meg akartam csinálni. Íme a kód: https://github.com/opsbears/phpqa
Maga a program PHP kódot ellenőriz kurrens best practicek betartására. Jelenleg elég limitált a fícsörszet, javarészt az új PHP 7-es dolgokat nézi:
- nincs declare(strict_types=1) a fájlok elején.
- nincs type hint egy függvény paraméteren
- nincs return type egy függvényen de van return, vagy PHP 7.1-től nincs return type hint a függvényen
- nem PSR-4-es betöltést használ a kód, hibás vagy hiányzik a composer.json, illetve ha nem a megfelelő fájlban van az adott osztály.
- egy fájlban keveredik a PHP és nem PHP kód
Amit még szeretnék:
- inkonzisztens return-ök kezelése (pl. nem minden ágban van return vagy a visszaadott adatok típusa eltérő)
- típusellenőrzés változókra (pl. egy függvényben megváltozik a változó típusa vagy nem megfelelő a return típus)
- osztály függvényhívás potenciális NULL értékre
Amint látjátok, ez leginkább az erős típusosság irányába megy és hasonlít a HHVM typecheckerére. Emellett nem helyettesíti az olyan eszközöket mint a PHPCS. (Technikailag a PHPCS a tokenizált kóddal dolgozik, amíg az én kódom az AST-t nézi.)
Értelemszerűen a kódja még erősen prototípus minőségével rendelkezik, a későbboekben szeretnék takarítani és egyszerűbbé szeretném tenni az inspectionök írását.
Amire kíváncsi vagyok az az, hogy Ti mit tennétek még bele?
Hozzászólások
Off: szilvás buktát, mert azt szeretem.
Boldog új évet! :)
Off: https://github.com/opsbears oldalon mennyi érdekeset látok, huh, köszi.
Az Opsbearses cuccok kozott takaritani kellene, jopar dolog outdated, szoval ovatosan. A random kodjaim ezeken GitHub helyen laknak:
- https://github.com/janoszen
- https://github.com/Webtudor
- https://github.com/hackification
- https://github.com/opsbears
- https://github.com/refactorzone
- https://github.com/refaktormagazin
- https://github.com/ubbs
--
Pásztor János
Sole Proprietor @ Opsbears | Development Lead @ IXOLIT | Refaktor Magazin | Refactor Zone
Forrás
Ez mar csak felig igaz. Van strict typing uzemmodja PHP 7-tol kezdve, nem veletlenul.
--
Pásztor János
Sole Proprietor @ Opsbears | Development Lead @ IXOLIT | Refaktor Magazin | Refactor Zone
Ez kétségtelen. :) Más kérdés, hogy hány helyen használnak PHP 7-et (és ebből hány helyen van strict_types (a php devekből kiindulva szerintem 1% alatt) :))
Nekem egy ideje benne van a strict_types a default PHP file templatemben es eszre sem vettem a kulonbseget. Talan azert, mert egy normalisan felepitett PHP programban messze nincs annyi automatikus tipuskonverzio mint az ember hinne. Amikor kell a konverzio, akkor tobbnyire ugyis explicit typecastet hasznalsz, plusz ellenorzod hogy tenyleg az van-e a stringben amit varsz.
Weblaboron volt errol egy nagyobb vita nemreg. Nekem az a velemenyem, hogy PHP-ban automatikus tipuskonverziora hagyatkozni oroszrulett.
A celom ezzel a szoftverrel az, hogy az olyan embereknek segitsek, akik szigoruan tipusosan akarnak programozni. Az adott javaslatok egy resze pont abban segit, hogy a tipusossag hasznalataval kevesbe legyen bugos a kod. Nem kotelezo megfogadni oket. :)
--
Pásztor János
Sole Proprietor @ Opsbears | Development Lead @ IXOLIT | Refaktor Magazin | Refactor Zone
Szerintem típusok nélkül kevesebbet kell gépelni. (én max akkor használom, ha valami gyorsan kell és randán :))
Ha meg már szigorúan típusos kell nem PHP (mert nem ez az egyetlen gond vele :))
Arra van az IDE, beirom a kezdobetut es mar dobja is fel. PHP-ban lehet meglepoen kulturaltan programozni, de semmivel nem egyszerubb mint egy szigoruan tipusos nyelvben programozni. Ajanlott olvasmany.
Ettol fuggetlenul, van aki szeretne PHP-ban ilyen modon programozni, es vannak fejlesztok akiknek a kormet nekem kell csapkodnom es PHP-ban dolgoznak. :)
--
Pásztor János
Sole Proprietor @ Opsbears | Development Lead @ IXOLIT | Refaktor Magazin | Refactor Zone
IDE-t programozók használnak. (néhány kódra ránézve néha úgy tűnik ők se :))
Az így keletkező szemét miatt meg az üzemeltetők szívnak (szvsz ezen a szigorúan típusos előírás nem nagyon segít ;)).
Aztán bezzeg a devek szívnak amikor pl. már egy "adminer" is úgy lesz kategorizálva, mint veszélyes script. :P
Ha uzemeltetesz, pont a Te erdeked lenne, hogy ne legyen tele notice-okkal a log. Az ilyen toolok segitenek ebben.
--
Pásztor János
Sole Proprietor @ Opsbears | Development Lead @ IXOLIT | Refaktor Magazin | Refactor Zone
Ha üzemeltetsz sajna legtöbbször nem nyúlhatsz a szeméthalomhoz amit a devek webalkalmazásnak hívnak. :(
Jo, de ez esetben neked nem a nyelvvel van bajod, hanem a hozza nem erto fejlesztokkel. Szar kodot barmilyen nyelvben lehet irni.
--
Pásztor János
Sole Proprietor @ Opsbears | Development Lead @ IXOLIT | Refaktor Magazin | Refactor Zone
"Szar kodot barmilyen nyelvben lehet irni."
Hogy ezzel mennyire egyetértek...
--
openSUSE 42.1 x86_64
Off Vicces ez a tultolt ojjektumizalas a phpben. Egy csomo mindent neki kene adni. C# utan a fejemet fogom. Kb meg 20 ev mire ott lesznek mint a c#. Megvolyan devenv is lesz.
Buek holgyeim
------------------------
Jézus reset téged