Fil-qosor: Il-PSRs (PHP Standards Recommendations) huma standards tal-PHP-FIG, grupp ta' proġetti PHP stabbiliti. Jistabbilixxu regoli u interfaces komuni, pereżempju PSR-4 għall-autoloading, PSR-3 għal-loggers, PSR-7 għal messaġġi HTTP u PSR-11 għal containers. Kull PSR għandu status: aċċettat, abbozz, skadut jew abbandunat. Il-PSRs jagħmlu l-kodiċi aktar sostitwibbli u aktar faċli biex jiġi vverifikat, imma ma jagħlqux vulnerabbiltajiet fl-interpretatur ta' PHP bħal PHP2Shell.
X'inhi l-PHP-FIG u x'inhuma l-PSRs?
PHP-FIG tfisser PHP Framework Interop Group. Il-grupp jiddeskrivi l-għan tiegħu stess bħala li jmexxi PHP 'il quddiem permezz ta' kollaborazzjoni u standards. Wara PSR għalhekk ma jkunx hemm manifattur, imma vot bejn proġetti li jridu jżommu s-softwer tagħhom kompatibbli ma' xulxin.
Għal min jieħu d-deċiżjonijiet il-benefiċċju huwa tanġibbli: jekk applikazzjoni tosserva l-interfaces tal-PSR, il-librerija tar-reġistrazzjoni, pereżempju, tista' tiġi sostitwita mingħajr ma jintmess il-kodiċi kollu. Dan inaqqas id-dipendenza minn pakketti individwali u minn fornituri tas-servizzi.
It-triq ta' PSR: minn Pre-Draft sa Accepted
L-istatut tal-PHP-FIG jiddeskrivi proċess fiss:
- Pre-Draft: Jiġi ċċarat jekk hemmx interess biżżejjed. Jiġi mwaqqaf grupp tax-xogħol, u wara vot b'suċċess il-proposta tirċievi numru PSR.
- Draft: Il-proposta tiġi elaborata, alternattivi u raġunijiet jidħlu f'dokument meta.
- Review: Il-komunità tittestja l-ispeċifikazzjoni b'implimentazzjonijiet ta' prova, għal mill-inqas erba' ġimgħat u sakemm ikun hemm żewġ implimentazzjonijiet indipendenti u vijabbli.
- Accepted: Wara vot b'suċċess il-PSR jiġi aċċettat; il-grupp tax-xogħol jitħassar.
Barra minn hekk hemm żewġ stati oħra. Deprecated tfisser: aċċettat, imma mhux rakkomandat aktar, l-aktar għax standard iktar ġdid jissostitwih. Abandoned tfisser: ma jinħadimx aktar fuqu.
Il-PSRs kollha bl-istatus
Stat skont il-ħarsa ġenerali tal-PHP-FIG fil-mument ta' din il-paġna:
| Nru | Titlu | Status |
|---|---|---|
| PSR-0 | Autoloading Standard | skadut |
| PSR-1 | Basic Coding Standard | aċċettat |
| PSR-2 | Coding Style Guide | skadut |
| PSR-3 | Logger Interface | aċċettat |
| PSR-4 | Autoloading Standard | aċċettat |
| PSR-5 | PHPDoc Standard | abbozz |
| PSR-6 | Caching Interface | aċċettat |
| PSR-7 | HTTP Message Interface | aċċettat |
| PSR-8 | Huggable Interface | abbandunat |
| PSR-9 | Security Advisories | abbandunat |
| PSR-10 | Security Reporting Process | abbandunat |
| PSR-11 | Container Interface | aċċettat |
| PSR-12 | Extended Coding Style Guide | aċċettat |
| PSR-13 | Hypermedia Links | aċċettat |
| PSR-14 | Event Dispatcher | aċċettat |
| PSR-15 | HTTP Handlers | aċċettat |
| PSR-16 | Simple Cache | aċċettat |
| PSR-17 | HTTP Factories | aċċettat |
| PSR-18 | HTTP Client | aċċettat |
| PSR-19 | PHPDoc tags | abbozz |
| PSR-20 | Clock | aċċettat |
| PSR-21 | Internationalization | abbozz |
| PSR-22 | Application Tracing | abbozz |
Il-PSRs l-aktar importanti fil-prattika
- PSR-4 (Autoloading): jimmappja ismijiet ta' klassijiet fuq mogħdijiet ta' fajls u huwa l-bażi tal-autoloader ta' Composer. Dettalji fil-paġna Namespaces u autoloading.
- PSR-1 u PER Coding Style: regoli komuni għall-ortografija u l-formattjar. PER Coding Style jestendi u, skont il-PHP-FIG, jissostitwixxi PSR-12 u jipprevedi PSR-1.
- PSR-3 (Logger): interface uniformi tal-logger fin-namespace
Psr\Logb'tmien livelli minnemergencysadebug. - PSR-7, PSR-15, PSR-17, PSR-18 (HTTP): interfaces għal talbiet u tweġibiet, middleware, factories u clients HTTP. Ħafna frameworks ta' PHP jibnu fuqhom jew joffru pontijiet.
- PSR-11 (Container): interface komuni għal containers ta' dependency injection.
- PSR-6 u PSR-16 (Cache): żewġ interfaces għall-ħażna temporanja, waħda dettaljata u waħda sempliċi.
- PSR-14 u PSR-20 (Events, arloġġ): interfaces komuni għall-avvenimenti u għall-ħin kurrenti. Arloġġ sostitwibbli jagħmel kodiċi li jiddependi mill-ħin, pereżempju l-iskadenza ta' tokens, faċli biex jiġi ttestjat.
In-numri, bil-mod, ma jgħidu xejn dwar l-importanza. Jingħataw meta tidħol il-fażi tal-abbozz, u għalhekk proposti skaduti u abbandunati jinsabu bejn standards importanti u aċċettati.
<?php
use Psr\Log\LoggerInterface;
final class Bestellimport
{
public function __construct(private LoggerInterface $log) {}
public function importieren(string $datei): void
{
try {
// ... ipproċessa l-fajl ...
} catch (\Throwable $e) {
$this->log->error('Import von {datei} fehlgeschlagen', [
'datei' => basename($datei),
'exception' => $e,
]);
}
}
}
X'relazzjoni għandhom il-PSRs mas-sigurtà
Diversi standards jolqtu direttament is-sigurtà. PSR-3 jistabbilixxi li l-exceptions jingħaddew fil-kuntest taħt iċ-ċavetta exception u li placeholders bħal {datei} jinbidlu mill-kuntest. Il-valuri m'għandhomx jiġu megħjuna minn qabel, għax il-logger ma jafx fejn aktar tard se jintwerew. Min juri l-logs f'interface tal-web irid jagħmel dan l-escaping hemmhekk. Aktar dwar dan fl-artikolu Reġistrazzjoni sigura.
PSR-7 jiddeskrivi l-messaġġi HTTP bħala oġġetti li ma jinbidlux u b'UploadedFileInterface::moveTo() joffri mod uniformi biex fajls imtellgħin jinħażnu. L-ispeċifikazzjoni teżiġi li l-fajl oriġinali jitneħħa wara. Il-verifika tat-tip tal-fajl u tad-destinazzjoni tibqa' kompitu tal-applikazzjoni.
Jixraq li jiġi nnutat li PSR-9 (Security Advisories) u PSR-10 (Security Reporting Process) ġew abbandunati. Standard komuni għal rapporti tas-sigurtà għalhekk ma jeżistix; kull proġett jirregola dan waħdu. Kif il-proġett PHP innifsu jittratta l-vulnerabbiltajiet tiddeskrivih il-paġna Kif il-proġett PHP jittratta l-vulnerabbiltajiet tas-sigurtà.
Kontra PHP2Shell l-istandards ma jgħinux: il-vulnerabbiltajiet CVE-2026-109618 u CVE-2026-109619 jinsabu fl-interpretatur. Obbligatorju huwa l-aġġornament għal PHP 8.5.12, 8.4.27, 8.3.36 jew 8.2.35 u r-restart tal-proċessi kollha ta' PHP.
Kif jgħin PHP SOS konkretament?
- Niċċekkjaw kif l-applikazzjoni tagħkom tirreġistra u niżguraw li l-exceptions jispiċċaw fil-log, imma mhux data ta' aċċess jew identifikaturi tas-sessjoni.
- Nevalwaw kif huma implimentati l-ipproċessar tal-uploads u tal-HTTP, anki jekk jgħaddu minn libreriji PSR-7.
- Neżaminaw żviluppi proprji bħala parti minn awditu tas-sigurtà u test ta' penetrazzjoni.
- Napplikaw aġġornamenti ta' PHP, nerġgħu nibdew il-workers kollha u niddokumentaw l-istat.
Mistoqsijiet frekwenti
X'tfisser PSR?
PSR tfisser PHP Standards Recommendation. Ir-rakkomandazzjonijiet jiġu żviluppati u miftiehma mill-PHP-FIG, il-PHP Framework Interop Group. Huma volontarji, imma ħafna frameworks u libreriji japplikawhom.
PSR-12 għadu japplika?
PSR-12 għadu miżmum mill-PHP-FIG bħala aċċettat. Madankollu, il-PHP-FIG ippubblikat suċċessur, PER Coding Style, li skont dak li tgħid hi stess jestendi u jissostitwixxi PSR-12. Bħalissa hemmhekk il-verżjoni hi 3.1.
Hemm PSR għal rapporti tas-sigurtà?
Kien hemm żewġ proposti, PSR-9 għal Security Advisories u PSR-10 għall-proċess tar-rappurtar ta' vulnerabbiltajiet. It-tnejn huma miżmuma mill-PHP-FIG bħala abbandunati. Il-proġetti għalhekk jirregolaw huma stess il-proċess tar-rappurtar.
Il-proġett tiegħi jrid josserva l-PSRs?
Le, m'hemm l-ebda obbligu. PSR-4 għall-autoloading u l-interfaces bħal PSR-3 jew PSR-7, madankollu, jiffaċilitaw b'mod sinifikanti l-użu ta' pakketti barranin u l-bidla ta' fornituri tas-servizzi.