Zer dira PHP diseinu ereduak?

PHP design Patterns

PHP diseinu ereduak

Orokorra: nola garrantzitsua diseinu patroiak gaur egungo aplikazioak garatzeko funtsezko zati bat bihurtu Denok dakigu, izan da edozein teknologia. PHP teknologia hauek ere diseinu eredua izan garapenaren zati integral bihurtu. Commonly used design patterns are also followed in the PHP development world.

Artikulu honetan bertan PHP domeinua erabiltzen dira aplikazio adibide batzuk ezberdinen diseinu patroiak buruz hitz I.

Sarrera: Diseinu patroiak berrerabilgarriak generic arazo komunei irtenbide bat ematen. Diseinu eredua ez da hormigoizko irtenbide bat bihurtu daiteke ere iturburu-kodea edo makina-kode bat baizik txantiloi bat erabili daitekeen egoera desberdinetan arazoren bat konpondu behar da. Diseinu ereduak garapen azkarrago laguntzeko txantiloiak frogatu bezala eta garatzaileak puntu batetik, ezartzeko bakarrik behar da. Diseinu patroiak bakarra egiteko software garapen azkarragoa baina baita ideia enkapsulatu modu errazago batean. PHP Munduan, Hurrengo bost diseinu ereduak orokorrean erabiltzen dira -

  • Factory eredua
  • Singleton eredua
  • Observer eredua
  • Komando Pattern of The Chain
  • Estrategia eredua

Factory eredua:

fabrika eredua zein solteak bategitearen gaitzen irtenbidea eman, beraz, balio digu estu bategitearen arazoa kentzeko. developer Baita aurrean aldaketa jakitun denok kode bat mantentzen dugun bitartean, ongi akoplatu da. Factory eredua class bat metodo batzuk objektuak sortzeko guretzat exekuzio izatea eskaintzen. Horren ordez instantzia sortzeko zuzenean fabrikan erabiltzen ditugu guretzat objektuak sortzeko. Thus, sortu objektuaren mota aldatu behar badugu, besterik fabrika aldatu behar dugu. Ondorengo kodea fabrika PHP ezarpena adibide bat da -

Listing 1: lagin fabrika PHP ezarpena A

[Code]

<?php

interface Customer

{

funtzio getName();

}

Klase Bezeroaren inplementatzen Customer

{

funtzio publikoaren __construct ( $id ) { }

funtzio publikoaren getName ()

{

return “PHP - Factory Pattern”;

}

}

klase CustomerFactory

{

funtzio estatiko publiko Sortu ( $id )

{

itzuli Bezeroaren berria ( $id );

}

}

$UO = CustomerFactory::Sortu ( 1 );

Echo ( $uo->getName().”\n” );

?>

[/Code]

Goiko adibidean izeneko interfaze bat dugu, Bezeroaren objektuaren definizioa ditu. Interfaze hau da, klase Bezeroaren ezarri. fabrika class CustomerFactory Bezeroak objektuak sortzen. kode hau exekutatu badugu komando lerroan bertan PHP interpretor bat emaitza gisa lortzen ditugu ditu on -

[Code]

% php factorySample.php

PHP - Factory Pattern

%

[/Code]

Singleton eredua:

Izenak dioen bezala, singleton patroia esker, adibidez bakarra sortuko den. aplikazio bat garatzeko bitartean, egoera batetik askotan, non objektu baten instantzia bakar bat izan behar dugu etorriko gara. Esate Hau prozesu desberdinak parteka daitezke. E.g. datu-baseko konexio objektu bat. Beti da gomendagarria da datu-baseko konexio objektua sortu eta suntsitu ordena irekitzea goiburu saihesteko eta konexioa itxi batean. Ondorengo kodea erakusten Singleton nola ezartzeko PHP -

Listing 2: PHP Singleton ezartzeko

[Code]

<?php

require_once(“DB.php”);

klase DatabaseConnection

{

publiko estatiko funtzioa getDBO ()

{

estatiko $ db = null;

bada ( $db == null )

$db = DatabaseConnection berria();

bueltan $ db;

}

pribatua $ _handle = null;

Funtzio pribatua __construct()

{

$DSNa = 'mysql://erro:password@dbhost/dbinstance’;

$hauxe>_handle =& PP::konektatu( $DSNa, array() );

}

funtzio publikoaren heldulekua()

{

itzuli $ hauxe>_handle;

}

}

inprimatu( “maneiatu = “.DatabaseConnection::zaitez()->kudeatzeko().”\n” );

inprimatu( “maneiatu = “.DatabaseConnection::zaitez()->kudeatzeko().”\n” );

?>

[/Code]

batez kodea erakusten db Konexioa nola iritsi singleton hurbilketa erabiliz. Klase honetan eraikitzaile pribatuak orain dela, ezin da klase kanpotik deitzen. The estatiko metodoa - getDBO () da deitzailearen class batetik deitu du PP konexio objektu eskuratu.

Observer eredua:

behatzaile eredua oso sinplean. Objektu bat egiten da bertan beha daitezkeen beste objektu bat ahalbidetzen duen metodo bat gehituz, behatzaile erregistratu emateko. du beha objektu lortzen aldatu bada, mezu bat bidaltzen bertan begirale gisa erregistratuta daude objektuei da. Ondorengo kodea erakusten Observer patroia nola ezartzea -

Listing 3: Observer Pattern PHP ezarpena

[Code]

<?php

interface Observer

{

funtzio onChanged( $bidaltzailea, $argumentuak );

}

interface hauteman

{

funtzio addObserver( $behatzaile );

}

Klase CustomerList inplementatzen hauteman

{

pribatua $ _observers = array();

funtzio publikoaren addCustomer( $izena )

{

Bakoitzarentzako( $hauxe>_observers $ Behatokia gisa )

$obs->onChanged( $hau, $izena );

}

funtzio publikoaren addObserver( $behatzaile )

{

$hauxe>_observers []= $ Behatzaile;

}

}

Klase CustomerListLogger inplementatzen Observer

{

funtzio publikoaren onChanged( $bidaltzailea, $argumentuak )

{

oihartzuna( “'$ Args’ Bezeroaren gehitu da to the list n” );

}

}

$ul = Erabiltzaile zerrenda berria();

$Ulia>addObserver( CustomerListLogger berria() );

$Ulia>addCustomer( “Jack” );

?>

[/Code]

batez kodea bi interfazeak eta dagozkien ezartzeko klaseak definitzen.

Komando-eredua katea:

Komando eredua katea zein da solteak bategitearen kontzeptua oinarritzen beste eredua da. Hemen handler bakoitzak erabakitzen eskaera kudeatu ahal izango da ala ez. du ahal bada, eskaera kudeatzen da eta prozesua gelditu da. Hala ez bada, eskaera gero hurrengo handler eta abar gainditu da. Ondorengo kodea lagin patroi hau inplementazioa da -

Listing 4: Sample kodea Komando Pattern Chain gauzatzeko -

[Code]

<?php

interface Komando

{

funtzio onCommand( $izena, $argumentuak );

}

klase CommandChain

{

pribatua $ _commands = array();

 

funtzio publikoaren addCommand( $cmd )

{

$hauxe>_commands []= $ Cmd;

}

funtzio publikoaren runCommand( $izena, $argumentuak )

{

Bakoitzarentzako( $hauxe>_commands $ cmd gisa )

{

bada ( $cmd->onCommand( $izena, $argumentuak ) )

return;

}

}

}

Klase CustCommand inplementatzen Komando

{

funtzio publikoaren onCommand( $izena, $argumentuak )

{

bada ( $izena != 'AddCustomer’ ) itzultzeko faltsua;

oihartzuna( “Hau da CustomerCommand manipulatzea 'addCustomer' n” );

itzuliko da egia;

}

}

Klase MailCommand inplementatzen Komando

{

funtzio publikoaren onCommand( $izena, $argumentuak )

{

bada ( $izena != 'Mail’ ) itzultzeko faltsua;

oihartzuna( “Hau da MailCommand manipulatzea 'mail' n” );

itzuliko da egia;

}

}

$cc = CommandChain berria();

$cc->addCommand( CustCommand berria() );

$cc->addCommand( MailCommand berria() );

$cc->runCommand( 'AddCustomer', zero );

$cc->runCommand( 'Mail', zero );

?>

[/Code]

Estrategia eredua:

estrategia eredua algoritmoak oinarritzen da. algoritmo konplexuak dira klaseak ateratako beraz, ordezkatu daitezke. Estrategia eredua plug eta play teoria oinarrituta dago. estrategia eredua ezartzeko arrunt bat da, modu horretan, orrialdeetan dira bilaketa-emaitza orria sailkapenean aldatu nahi badugu. lagin ezartzeko honetan erakusteko -

Listing 5: Sample Estrategia eredua ezartzeko

[Code]

<?php

interface Estrategia

{

funtzio iragazkia( $erregistro );

}

Klase FindAfter inplementatzen Estrategia

{

pribatua $ i_zena;

funtzio publikoaren __construct( $izena )

{

$hauxe>i_zena = $ name;

}

funtzio publikoaren iragazkia( $erregistro )

{

bueltan strcmp( $hauxe>i_zena, $erregistro ) <= 0;

}

}

Klase FindRandom inplementatzen Estrategia

{

funtzio publikoaren iragazkia( $erregistro )

{

bueltan rand( 0, 1 ) >= 0.5;

}

}

klase CustomerList

{

$ Pribatua _zerrenda = array();

funtzio publikoaren __construct( $izenak )

{

bada ( $izenak != null )

{

Bakoitzarentzako( $izen $ name gisa )

{

$hauxe>_zerrenda []= $ Name;

}

}

}

funtzio publikoaren Gehigarrien( $izena )

{

$hauxe>_zerrenda []= $ Name;

}

funtzio publikoa( $filter )

{

$recs = array();

Bakoitzarentzako( $hauxe>_zerrenda $ erabiltzaile gisa )

{

bada ( $filter->filter( $user ) )

$recs []= $ Erabiltzaile;

}

itzuli $ recs;

}

}

$ul = CustomerList berria( array( “eta Joe”, “Ric Anderson”, “Nick Paul”, “Megan Pit” ) );

$f1 = $ Ulia>aurkitu( FindAfter berria( “J” ) );

print_r( $f1 );

$f2 = $ Ulia>aurkitu( New FindRandom());

print_r( $f2 );

?>

[/Code]

Here, CustomerList klasearen Wrapper izen batzuk array bat izatea da. Klase hau bertan hainbat estrategia bat hartzen du izen horiek azpimultzo bat hautatzeko find metodo bat ezartzen. estrategiak Estrategia interfazea definitzen dira, bertan bi inplementazio ditu: Lehenengo bat aukeratzen bezeroei ausaz bestea izen guztiak aukeratzen bitartean izen bat zehaztu ondoren.

Summary: Beraz, diseinu patroiak ideia handi edozein PHP programazio hizkuntza barne erabil daiteke batzuk. eztabaidatu dugu PHP aplikazioak erabili ohikoena patroiak.
Dezagun gure eztabaida honako balak batera ondorioztatu dugu -

  • Diseinu ereduak teknologia guztietan erabiltzen dira garatzaileei bat komun berrerabilgarriak konponbidea arazo arruntak hurbilketa jarraitu laguntzeko.
  • Design Patterns ez dira hormigoizko baina kontzeptuala dira.
  • beste hizkuntzetan Like, PHP diseinu komun ereduak ere erabiltzen, horietako batzuk, gorago azaldu dira.

 

Tagged on: ,
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share