5. Na de mi a fene az a PHP-FIG?
2009-ben született a php|tek konferencián
PHP Framework Interop Group
Korábban PHP Standards Group
Jelenleg 28 projekt képviselő a tagja
6. És mi az a PSR?
PHP Standards Recommendation
Ajánlás, egy egységesebb PHP érdekében
A projekt által delegált személyek szavaznak
Jelenleg 4 elfogadott szabvány:
PSR-0, PSR-1, PSR-2, PSR-3
További 3 kidolgozás és elfogadás alatt.
7. PSR-0 / Autoloading
Hatalmas lépés az újrahasznosíthatóság felé
Egységes elnevezési konvenció:
<Vendor Name>(<Namespace>)*<Class Name>
A Composer és a PEAR PSR-0 kompatibilis
Például:
SymfonyCoreRequest => /path/to/project/lib/vendor/Symfony/Core/Request.php
ZendMailMessage => /path/to/project/lib/vendor/Zend/Mail/Message.php
8. PSR-1 / Basic Coding Standard
Csak <?php és <?= megengedett
Fájlok UTF-8 kódolásúak kell hogy legyenek
Egy fájlban csak deklaráció VAGY bármi más,
ne mixeljük
Class nevek: StudlyCaps
Konstansok: ALL_UPPERCASE
Metódusok, fügvények: camelCase
PSR-0 megfelelés szükséges
9. PSR-2 / Coding Style Guide
Kód olvashatóságát hivatott javítani
Indentálás 4 space, csak semmi tab!
Ajánlott sorszélesség 80, de nincs limitáció
namespace és use után üres sor
Class és metódus deklaráció után a kapcsos
zárójel új sorban
Visibility kulcsszavak kötelezőek
Vezérlési szerkezetek szabályozása
PSR-1 megfelelés szükséges
11. PSR-3 / Logger Interface
Egységes naplózó interfész
Syslog RFC szerint nyolc naplózási szint:
emergency, alert, critical, error, warning, notice, info
Megadható kontextus az üzenethez
Néhány implementor:
Monolog, Analog, Symfony, Mustache.php
12. (Review) PSR-4 / Autoloader
A PSR-0 egy modernebb változata
Orvosság a PSR-0 mellékhatásaira:
Valódi namespace vs _
$instance = new PackageFooBarBaz();
$instance = new PackageFoo_Bar_Baz();
Composer furcsaság:
PSR-0: Foo/Bar/Baz => vendor/foo/bar/src/Foo/Bar/Baz
PSR-4: Foo/Bar/Baz => vendor/foo/bar/src/Baz
13. (Draft) PSR-5 / PHPDoc
A sok API dokumentációs markup-ot szeretné
közös nevezőre hozni
Végre egységes formátum az annotációkra!
14. (Draft) PSR-6 / Cache
Cél ugyanaz, mint a PSR-3-nál
CachePool, és CacheItem definíció
Ahogy az adat bemegy, úgy kell kijönnie