Wat is die PHP ontwerpspatrone?

PHP design Patterns

PHP ontwerpspatrone

Oorsig: Ons weet almal hoe belangrik die ontwerp patrone 'n noodsaaklike rol in vandag se program-ontwikkeling geword, of dit nou 'n tegnologie. In die PHP tegnologie het ook ontwerp patroon integrale deel van die ontwikkeling word. Commonly used design patterns are also followed in the PHP development world.

In hierdie artikel sal ek praat oor die verskillende ontwerp patrone wat gebruik word in die PHP domein met 'n paar monster aansoeke.

Inleiding: Ontwerp patrone verskaf 'n generiese herbruikbare oplossing vir gemeenskaplike probleme. Ontwerp patroon is nie 'n konkrete oplossing wat omskep kan word in die bronkode of 'n masjien-kode eerder dit is 'n sjabloon wat gebruik kan word om 'n probleem in verskillende situasies op te los. Ontwerp patrone help in 'n vinniger ontwikkeling as die templates is bewys en vanaf punt die ontwikkelaar se, net implementering vereis. Ontwerp patrone nie net die ontwikkeling van sagteware vinniger maar ook omsluit groot idees in 'n eenvoudiger manier. In die PHP wêreld, volgende vyf ontwerp patrone gebruik word in die algemeen -

  • Die Patroon Factory
  • Die Singleton Patroon
  • The Observer Patroon
  • Die instruksies Patroon
  • Die strategie Patroon

Die Patroon Factory:

Die fabriek patroon bied 'n oplossing wat los koppeling stel, dus help ons om ontslae te raak van stywe koppeling probleem. As 'n ontwikkelaar ons almal is deeglik bewus van die veranderinge in die gesig gestaar, terwyl ons 'n kode te handhaaf, wat styf gekoppel. Factory patroon bied 'n klas met 'n paar metodes om voorwerpe te skep vir ons tydens looptyd. In plaas van die skep van die instansie direk gebruik ons ​​die fabriek om die voorwerpe vir ons skep. Thus, As ons die tipe van die voorwerp geskep verander, Ons het net nodig om die fabriek te verander. Die volgende kode is 'n voorbeeld van die fabriek implementering in PHP -

Listing 1: 'N Monster fabriek implementering in PHP

[Code]

<?PHP

koppelvlak kliënt

{

funksie getName();

}

klas kliëntediens implemente kliënt

{

openbare funksie __construct ( $id ) { }

openbare funksie getName ()

{

return “PHP - Factory Patroon”;

}

}

klas CustomerFactory

{

openbare statiese funksie Skep ( $id )

{

terugkeer nuwe kliënte ( $id );

}

}

$UO = CustomerFactory::Skep ( 1 );

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

?>

[/Code]

In die bogenoemde voorbeeld het ons 'n koppelvlak genoem, Kliënt wat die definisie van die voorwerp het. Dit koppelvlak geïmplementeer in die klas kliëntediens. Die fabriek klas CustomerFactory skep die kliënt voorwerpe. As ons uit te voer hierdie kode op die command line wat 'n PHP interpretor ons die resultaat as het -

[Code]

% PHP factorySample.php

PHP - Factory Patroon

%

[/Code]

Die Singleton Patroon:

Soos die naam aandui, Singleton patroon kan slegs een voorbeeld te skep. Terwyl die ontwikkeling van 'n aansoek, Ons kom oor baie situasies waar ons nodig het om net een voorbeeld van 'n voorwerp het. Hier kan gedeel word deur verskillende prosesse. E.g. 'n databasis konneksie voorwerpe. Dit is altyd aangeraai om die oorhoofse van die opening te vermy en die sluiting van die verband te skep en te vernietig die databasis verbinding voorwerp. Die volgende kode wys hoe om te implementeer Singleton in PHP -

Listing 2: Singleton implementering in PHP

[Code]

<?PHP

require_once(“Db.php”);

klas DatabaseConnection

{

openbare statiese funksie getDBO ()

{

statiese $ db = null;

indien ( $db == null )

$db = nuwe DatabaseConnection();

terugkeer $ db;

}

private $ _handle = null;

private funksie __construct()

{

$DSN = 'MySQL://wortel:password@dbhost/dbinstance’;

$hierdie->_handle =& DB::Verbind( $DSN, verskeidenheid() );

}

openbare funksie handvatsel()

{

terugkeer $ this->_handle;

}

}

Print( “hanteer = “.DatabaseConnection::kry()->hanteer().”\n” );

Print( “hanteer = “.DatabaseConnection::kry()->hanteer().”\n” );

?>

[/Code]

Bogenoemde kode wys hoe om die db verband te kry met behulp van die Singleton benadering. Die private konstruktor in hierdie klas verseker dat dit nie genoem kan word van buite die klas. Die statiese metode - getDBO () staan ​​bekend as die oproeper klas om die DB verbinding voorwerp te kry.

The Observer Patroon:

Die waarnemer patroon is baie reguit vorentoe. 'N voorwerp is waarneembaar gemaak deur die byvoeging van 'n metode wat 'n ander voorwerp toelaat, die waarnemer om te laat registreer. As die waarneembare voorwerp raak verander, Dit stuur 'n boodskap aan die voorwerpe wat as waarnemers geregistreer. Die volgende kode wys hoe om die Observer patroon te implementeer -

Listing 3: Observer Patroon implementering in PHP

[Code]

<?PHP

koppelvlak Observer

{

funksie onChanged( $sender, $argumente );

}

koppelvlak Waarneembare

{

funksie addObserver( $waarnemer );

}

klas CustomerList implemente Waarneembare

{

private $ _observers = array();

openbare funksie addCustomer( $naam )

{

vir elke( $hierdie->_observers as $ OBS )

$obs->onChanged( $this, $naam );

}

openbare funksie addObserver( $waarnemer )

{

$hierdie->_observers []= $ Waarnemer;

}

}

klas CustomerListLogger implemente Observer

{

openbare funksie onChanged( $sender, $argumente )

{

ECHO( “'$ Args’ Kliënt is by die lys gevoeg N” );

}

}

$ul = nuwe USERLIST();

$ul->addObserver( nuwe CustomerListLogger() );

$ul->addCustomer( “Jack” );

?>

[/Code]

Bogenoemde kode definieer twee koppelvlakke en hul onderskeie klasse implementering.

Die ketting van instruksies Patroon:

Die ketting van instruksies patroon is 'n ander patroon wat gebaseer is op die konsep van los koppeling. Hier besluit elke hanteerder of dit kan die versoek te hanteer of nie. As dit kan, die versoek hanteer word en die proses gestop. Indien nie, versoek word dan oorgedra na die volgende hanteerder en so aan. Die volgende kode is 'n monster implementering van hierdie patroon -

Listing 4: Monster-kode implementering Chain of Command Patroon -

[Code]

<?PHP

koppelvlak Command

{

funksie onCommand( $naam, $argumente );

}

klas CommandChain

{

private $ _commands = array();

 

openbare funksie addCommand( $cmd )

{

$hierdie->_commands []= $ Cmd;

}

openbare funksie runCommand( $naam, $argumente )

{

vir elke( $hierdie->_commands as $ cmd )

{

indien ( $cmd->onCommand( $naam, $argumente ) )

return;

}

}

}

klas CustCommand implemente Command

{

openbare funksie onCommand( $naam, $argumente )

{

indien ( $naam != 'AddCustomer’ ) return false;

ECHO( “Dit is CustomerCommand hantering 'addCustomer' n” );

terugkeer ware;

}

}

klas MailCommand implemente Command

{

openbare funksie onCommand( $naam, $argumente )

{

indien ( $naam != 'Pos’ ) return false;

ECHO( “Dit is MailCommand hantering 'pos' n” );

terugkeer ware;

}

}

$cc = nuwe CommandChain();

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

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

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

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

?>

[/Code]

Die strategie Patroon:

Die strategie patroon is gebaseer op algoritmes. Die komplekse algoritmes is 'n uittreksel uit die klasse sodat hulle kan maklik vervang. Strategie patroon is gebaseer op die plug and play teorie. 'N Algemene implementering van strategie patroon is as ons wil hê dat die manier waarop die bladsye word ingedeel in resultaat bladsy verander. 'N Monster implementering word hieronder getoon -

Listing 5: Monster implementering van strategie patroon

[Code]

<?PHP

koppelvlak Strategie

{

funksie filter( $rekord );

}

klas FindAfter implemente Strategie

{

private $ _name;

openbare funksie __construct( $naam )

{

$hierdie->_name = $ naam;

}

openbare funksie filter( $rekord )

{

terugkeer strcmp( $hierdie->_name, $rekord ) <= 0;

}

}

klas FindRandom implemente Strategie

{

openbare funksie filter( $rekord )

{

terugkeer rand( 0, 1 ) >= 0.5;

}

}

klas CustomerList

{

private $ _list = array();

openbare funksie __construct( $name )

{

indien ( $name != nul )

{

vir elke( $name soos $ naam )

{

$hierdie->_list []= Naam $;

}

}

}

openbare funksie byvoeging( $naam )

{

$hierdie->_list []= Naam $;

}

openbare funksie te bepaal( $filter )

{

$RECs = array();

vir elke( $hierdie->_list as $ gebruiker )

{

indien ( $filter>filter( $user ) )

$RECs []= $ Gebruiker;

}

terugkeer $ RECs;

}

}

$ul = nuwe CustomerList( verskeidenheid( “en Joe”, “Ric Anderson”, “Nick Paul”, “Megan Pit” ) );

$F1 = $ ul->vind( nuwe FindAfter( “J” ) );

print_r( $F1 );

$f2 = $ ul->vind( nuwe FindRandom());

print_r( $f2 );

?>

[/Code]

Here, die CustomerList klas is 'n wrapper met 'n verskeidenheid van 'n paar name. Hierdie klas implementeer 'n vonds metode wat een van verskeie strategieë neem vir die kies van 'n subset van die name. Die strategieë is gedefinieer deur die strategie koppelvlak, wat twee implementering het: Die eerste een kies die kliënte lukraak terwyl die ander kies al die name na 'n gespesifiseerde naam.

Summary: So ontwerp patrone is 'n paar van die groot idees wat gebruik kan word in 'n programmeertaal insluitend PHP. Ons het die mees algemene ontwerp patrone wat in PHP aansoeke bespreek.
Laat ons ons gesprek met die volgende 'bullets sluit -

  • Ontwerp patrone word in elke tegnologie om te help ontwikkelaars volg 'n gemeenskaplike herbruikbare oplossing benadering vir gemeenskaplike probleme.
  • Design Patterns is nie beton, maar is konseptuele.
  • Soos ander tale, PHP gebruik ook die algemene ontwerp van patrone, waarvan sommige hierbo verduidelik.

 

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