Ita no depit amancai in unu progetu PHP

Ita no depit amancai in unu progetu PHP

Còdixi PHP

Annus a oi PHP fiat cunsiderau pagu prus de unu gioghixeddu, unu linguàgiu fàcili po fai prus a lestu unu muntoni de cosa chi una borta boliat fata cun programas chi impreànt s'interfaci CGI. Custu de smenguai sa potèntzia oferta de su linguàgiu at tentu efetus malus meda me is annus, giai chi unu còdixi scritu mali at portau a progetus atacaus cun tènnicas de cracking e bessius malus a ddoi sighi a traballai candu is lìnias de su programa bessiant medas. Po is programadoris nous, andaus a biri comenti circai de evitai calincunu de custus problemas, incumentzendi beni, chena fai unas cantu faddinas fitianas.

Manìgiu de mòllius HTML

Connotus che motoris de templating, permitint de separai su còdixi PHP de su de sa presentada, s'HTML. In custa manera, su progetu est ordinau, cun totu is bantaxus possìbilis. Traballai apitzus de su còdixi est prus fàcili e fait fintzas a tenni una scuadra chi s'incurat de sa programatzioni e una de s'interfaci chi podint traballai in parallelu. Candu boleus cambiai una parti de su programa no arriscaus de sciusciai s'àtera.
Is motoris prus impreaus funt Smarty e Twig. Su traballu fait a ddu fai cun PHP etotu, ma cun unu motori est prus còmodu, fintzas gràtzias is funtzionis chi teneus a disponimentu po fai cussu scéti, e s'interfaci est mellus isolada de su programa.

Una libreria po manigiai sa basi de datus

Candu ligeus unu manuali PHP po sa primu borta imparaus a imbiai pedidas a una basi de datus che MySQL/MariaDB cun una tzerriada tipu

$res = mysqli_query($connection, "SELECT * FROM table");

De innoi a sighi impreendi custa manera de s'acapiai a MySQL pagu nci bolit. Su problema benit candu in sa pedida SQL depeus impreai datus de s'impitadori, imbiaus po esempru in unu formulàriu (form) HTML. Podit acutessi de scriri una cosa che

"SELECT * FROM users WHERE username = '{$_POST['username']}'"

chi impitadoris malus podint sfrutai po atacus de tipu Inietzioni de SQL (SQL Injection).
Una libreria po sa basi de datus at a permiti a su programadori de si-ndi scabulli de su traballu de scriri dònnia pedida a manu e de su perìgulu de faddinas de custu tipu, chi me is annus passaus fiant bastanti fitianas. Impreai PDO cun pedidas cun paràmetrus est giai unu passu ainnantis, ma nci-nd'at medas àteras chi permitint de manigiai is datus in manera ancora prus còmoda:

// Esempru cun Doctrine:
$user = $entityManager->getRepository('User')->findBy(['username' => $_POST['username']]);

// Esempru cun Eloquent
$user = Class::where('username', $_POST['username'])->first();

Una libreria po manigiai is formulàrius

Manigiai is formulàrius (o mòdulus, o form) est una de cussas fainas chi eis a fai bortas medas e sa secuèntzia de passus est sèmpiri sa pròpiu:

  1. scriri s'html;
  2. pigai is baloris de is vetoris $_POST e $_GET;
  3. averiguai chi is baloris siant bonus;
  4. si no funt bonus torrai agou;
  5. si funt bonus, ddus impreai me is operatzionis chi si serbint.

Balit sa pena, duncas, de circai una libreria chi fatzat sa parti manna de su traballu po nosu.Sa libreria de Symfony est cumpleta meda e permitit una personalizatzioni manna, ma est tropu cumplicada po su gustu miu, e arriscat de agiungi prus traballu de su chi circais de bogai. A dolu mannu no ndi tèngiu àteras de cunsillai ca sa parti manna de is chi apu impreau ddas ia scritas deu etotu impari cun collegas.

Una libreria po manigiai s'atzessu e is permissus

S'atzessu de is impitadoris e is permissus chi tenint (aministradori, collaboradori, moderadori, etc) est un'àtera faina de importu candu scrieus un'aplicatzioni web, e depit essi fata beni po evitai atacus, furas de datus e àteras cosas pagu galanas. Poita si depeus pigai su strobu de dda fai de s'incumentzu candu dònnia framework nd'oferit una proada e averiguada de millas de programadoris?

Inietzioni de dipendèntzias

Sa tentatzioni, candu scrieus una classi de ogetus est de creai is dipendèntzias de aìnturu:

class Vetura {
  protected Motori $motori;

  public function __construct() {
    $this->motori = new Motori();
    // etc ..
  }
}

custu no andat beni po motivus vàrius. Po incumentzai, imaginaus de tenni in s'esempru duas versionis de su motori: scambiai is duas versionis bessit cumplicau. In prus, candu scrieus unu test po sa classi vetura, est còmudu a passai unu motori farsu (mock) cun datus de proa e mesuras de is interatzionis cun sa vetura. Custu bessit ancora prus de importu candu sa dipedèntzia fait cosas chi depeus studai in s'interis de su test, comenti tzerriadas a API, scrituras in sa basi de datus, imbiu de messàgius, etc. Sa manera curreta de traballai est:

class Vetura {
  protected MotoriInterface $motori;

  public function __construct(MotoriInterface $motori) {
    $this->motori = $motori;
    // etc ..
  }
}

Po fai is cosas prus fàcilis ddoi at librerias medas chi manìgiant s'inietzioni de is dipendèntzias po nosu. Totu is framework modernus ddu faint, ma podeus fintzas circai càncua cosa de simpri, comenti PHP-DI.

Test, test, test!

Proai s'aplicatzioni a manu est de importu, ma no abastat. Su prus trastu famau po scriri test automàticus est PHPUnit, chi permitit de scriri unidadis chi averìguant chi una parti de su còdixi (funtzioni, ogetu, etc) torrit su balori chi abetaus cun una certa intrada. Esempru:

$this->assertSame(5, summa(2, 3));

Scriendi afirmaduras che custa est utilosu siat po cumprendi si eus fatu càncua faddina in funtzionis cumplessas, siat po s'assegurai chi custas funtzionis no acabint de funtzionai comenti si depit apustis de unu càmbiu.
Ma no est s'ùnicu trastu po proai su còdixi nostu. Si cunsillu po esempru Codeception chi permitit de proai su traballu nostu de su puntu de vista de s'impitadori. Po esempru, custu còdixi

$I->amOnPage('/login');
$I->fillField('username', 'Sardumàticu');
$I->fillField('password', 'abcdefghi');
$I->click('INTRA');
$I->see('Benibènniu, Sardumàticu!');

at a intrai in sa pàgina de acessu e s'at a assegurai chi ponendi is datus giustus s'impitadori at a podi imbucai. Est una faina de importu mannu, ca a bortas faendi unu càmbiu arrogaus su cumportamentu de una pàgina chena si-nd'acatai. Si scrieus test chi dd'averìguant ddoi at prus pagu possibilidadi de lassai sorpresas malas a is impitadoris - e fintzas a is negòtzius nostus, si su situ nostu si portat dinai.

Cumenta

Categorias