PHP dizayn nümunələri hansılardır?

PHP design Patterns

PHP dizayn nümunələri

Baxış: Biz bütün dizayn nümunələri bu gün proqram inkişaf mühüm hissəsi necə vacib bilirik, hər hansı bir texnologiya ola. PHP texnologiya də dizayn model inkişaf ayrılmaz hissəsinə çevrilmişdir. Commonly used design patterns are also followed in the PHP development world.

Bu yazıda mən bir nümunə ərizə ilə PHP sahəsində istifadə olunur, müxtəlif dizayn nümunələri danışacaqlar.

Giriş: Design nümunələri ümumi problemlərin ümumi reusable həll təmin. Design model deyil, müxtəlif vəziyyətlərdə bir problemi həll etmək üçün istifadə edilə bilər bir şablon edir mənbə kodu və ya bir maşın kodu konvertasiya edilə bilər konkret həlli deyil. Design nümunələri şablonları sübut kimi sürətli inkişaf yardım və geliştirici baxımdan, yalnız həyata keçirilməsi tələb olunur. Design nümunələri sürətli proqram inkişaf etmək, həm də sadə şəkildə böyük fikir içine yalnız. PHP dünyada, Beş dizayn nümunələri ümumi istifadə olunur aşağıdakı -

  • Factory Pattern
  • Singleton Pattern
  • Observer Pattern
  • Command Pattern Chain
  • Strategy Pattern

Factory Pattern:

zavod model boş coupling imkan verir ki, həll edir, beləliklə sıx coupling problemi qurtarmaq üçün kömək edir. biz bir kod saxlamaq isə geliştirici kimi, biz bütün qarşı-qarşıya dəyişikliklər yaxşı bilirik, olan sıx coupled. Factory model bəzi metodları zamanı bizim üçün obyektlərin yaratmaq üçün olan bir sinif edir. Əvəzində instansiya yaradılması birbaşa bizə obyektləri yaratmaq üçün zavod istifadə. Thus, biz yaratdıq obyekt növü dəyişdirmək varsa, biz yalnız zavod dəyişdirmək lazımdır. Aşağıdakı kodu PHP zavod həyata nümunəsidir -

Listing 1: PHP bir nümunə zavod həyata keçirilməsi

[Code]

<?php

interface Customer

{

funksiyası getName();

}

class müştəri həyata keçirir

{

public function __construct ( $id ) { }

public function getName ()

{

return “PHP - Factory Pattern”;

}

}

class CustomerFactory

{

ictimai statik funksiyası yarat ( $id )

{

yeni Müştəri qayıtmaq ( $id );

}

}

$uo = CustomerFactory::yaratmaq ( 1 );

əks-səda ( $uo->getName().”\n” );

?>

[/Code]

Yuxarıdakı misalda biz adlı bir interface var, obyektin müəyyən var Customer. Bu interface səviyyəli müştəri həyata keçirilir. zavod sinif CustomerFactory Customer obyektlərin yaradır. Biz kimi nəticə almaq PHP interpretor var command line bu kodu icra varsa -

[Code]

% php factorySample.php

PHP - Factory Pattern

%

[/Code]

Singleton Pattern:

Adı təklif kimi, Singleton model yalnız bir misal yaradılmış imkan verir. bir proqram inkişaf isə, biz bir obyekt yalnız bir misal lazımdır bir çox hallarda gəlmək. Bu instansiya müxtəlif prosesləri ilə ortaq ola bilər. E.g. bir verilənlər bazası qoşulma obyektləri. O, həmişə açılması yerüstü qarşısını almaq üçün və keçid bağlanması verilənlər bazası qoşulma obyekt yaratmaq və məhv etmək tövsiyyə edilir. Aşağıdakı kodu PHP Singleton həyata necə göstərir -

Listing 2: PHP Singleton həyata keçirilməsi

[Code]

<?php

Require_once(“db.php”);

class DatabaseConnection

{

ictimai statik funksiyası getDBO ()

{

statik $ db = null;

əgər ( $db == null )

$db = Yeni DatabaseConnection();

geri $ db;

}

Şəxsi $ _handle = null;

Şəxsi funksiyası __construct()

{

$DSN = 'mysql://kök:password@dbhost/dbinstance’;

$this->_handle =& DB::birləşdirmək( $DSN, array() );

}

public function sapı()

{

qayıtmaq $ this->_handle;

}

}

çap( “Qulp = “.DatabaseConnection::almaq()->idarə().”\n” );

çap( “Qulp = “.DatabaseConnection::almaq()->idarə().”\n” );

?>

[/Code]

Yuxarıda code tek yanaşma istifadə db keçid almaq üçün necə göstərir. Bu sinif özəl konstruktor Bu sinif xaricində adlandırmaq olmaz təmin edir. statik metodu - getDBO () DB əlaqə obyekt almaq üçün zəng sinif adlanır.

Observer Pattern:

müşahidəçi model çox düz irəli. Bir obyekt bir obyekt imkan verir ki, metodu əlavə müşahidə edilir, müşahidəçi qeydə almaq üçün. müşahidə predmeti dəyişdirildikdə olur, Bu müşahidəçi kimi qeydə alınır obyektlərin bir mesaj göndərir. Aşağıdakı kodu Observer model həyata necə göstərir -

Listing 3: PHP Observer Pattern həyata keçirilməsi

[Code]

<?php

interface Observer

{

funksiyası onChanged( $göndərən, $args );

}

müşahidə interface

{

funksiyası addObserver( $müşahidəçi );

}

class CustomerList müşahidə həyata keçirir

{

Şəxsi $ _observers = array();

public function addCustomer( $ad )

{

foreach( $this->$ OBS kimi _observers )

$obs->onChanged( $bu, $ad );

}

public function addObserver( $müşahidəçi )

{

$this->_observers []= $ Müşahidəçi;

}

}

class CustomerListLogger Observer həyata keçirir

{

public function onChanged( $göndərən, $args )

{

əks-səda( “'$ Args’ Müştəri siyahısı n əlavə edilmişdir” );

}

}

$ul yeni Mədən =();

$Firyəbinin>addObserver( yeni CustomerListLogger() );

$Firyəbinin>addCustomer( “domkrat” );

?>

[/Code]

Yuxarıda code iki interfeys və onların müvafiq icra dərsləri müəyyən.

komanda Pattern zəncir:

komanda model zəncirvari boş coupling konsepsiyası əsasında başqa bir nümunəsidir. Burada hər handler Bu sorğu idarə və ya bilməz olub qərar. ola bilər, əgər, tələb idarə olunur və proses dayandırılır. Əgər olmasa, tələbi sonra növbəti handler və s qəbul edilir. Aşağıdakı kodu bu model bir nümunə təzahürüdür -

Listing 4: Command Pattern Chain həyata Sample kodu -

[Code]

<?php

interface Command

{

funksiyası onCommand( $ad, $args );

}

class CommandChain

{

Şəxsi $ _commands = array();

 

public function addCommand( $cmd )

{

$this->_commands []= $ Cmd;

}

public function runCommand( $ad, $args )

{

foreach( $this->$ Cmd kimi _commands )

{

əgər ( $cmd->onCommand( $ad, $args ) )

return;

}

}

}

class CustCommand Command həyata keçirir

{

public function onCommand( $ad, $args )

{

əgər ( $ad != 'AddCustomer’ ) saxta qayıtmaq;

əks-səda( “Bu CustomerCommand "addCustomer ' n user var” );

doğru qayıtmaq;

}

}

class MailCommand Command həyata keçirir

{

public function onCommand( $ad, $args )

{

əgər ( $ad != 'Mail’ ) saxta qayıtmaq;

əks-səda( “Bu n MailCommand "Mail" user var” );

doğru qayıtmaq;

}

}

$cc = Yeni CommandChain();

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

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

$cc->runCommand( "AddCustomer", sıfır );

$cc->runCommand( "Mail", sıfır );

?>

[/Code]

Strategy Pattern:

strategiya model alqoritmlər əsaslanır. onlar asanlıqla əvəz edilə bilər ki, kompleks alqoritmlər dərsləri hasil edilir. Strategy model plug və oyun nəzəriyyəsi əsaslanır. biz pages axtarış nəticəsində page sıralanır olan yolu dəyişdirmək istəyirsinizsə strategiya model ortaq təzahürüdür. A nümunə həyata keçirilməsi aşağıda göstərilir -

Listing 5: Strategy model nümunəsi həyata keçirilməsi

[Code]

<?php

interface Strategy

{

funksiyası filter( $rekord );

}

class FindAfter strategiyasını həyata keçirir

{

Şəxsi $ _name;

public function __construct( $ad )

{

$this->_name = $ name;

}

public function filter( $rekord )

{

geri strcmp( $this->_name, $rekord ) <= 0;

}

}

class FindRandom strategiyasını həyata keçirir

{

public function filter( $rekord )

{

geri rand( 0, 1 ) >= 0.5;

}

}

class CustomerList

{

Şəxsi $ _list = array();

public function __construct( $adları )

{

əgər ( $adları != null )

{

foreach( $$ Adı kimi adlar )

{

$this->_list []= $ Name;

}

}

}

ictimai funksiyası əlavə( $ad )

{

$this->_list []= $ Name;

}

public function tapmaq( $filtr )

{

$RECs = array();

foreach( $this->$ Istifadəçi kimi _list )

{

əgər ( $filtr->filtr( $user ) )

$RECs []= $ Istifadəçi;

}

$ Recs qayıtmaq;

}

}

$ul yeni CustomerList =( array( “və Joe”, “Ric Anderson”, “Nick Paul”, “Megan Pit” ) );

$f1 = $ Firyəbinin>tapmaq( yeni FindAfter( “J” ) );

print_r( $f1 );

$F2 = $ Firyəbinin>tapmaq( New FindRandom());

print_r( $F2 );

?>

[/Code]

Here, CustomerList sinif bəzi adların bir sıra olan banderol edir. Bu sinif həmin adları alt seçilməsi üçün bir neçə strategiyaları birini tutur bir tapmaq metodu həyata keçirir. strategiyaları Strategy interfeysi ilə müəyyən edilir, iki tətbiq olan: digər müəyyən adına bütün adları seçir isə birinci təsadüfi müştərilərə seçir.

Summary: Belə ki, dizayn nümunələri hər hansı bir proqramlaşdırma dili, o cümlədən PHP istifadə edilə bilər ki, böyük fikir bəzi. Biz PHP applications istifadə edilən ən ümumi dizayn nümunələri müzakirə etdik.
aşağıdakı güllə ilə müzakirə bağlamaq edək -

  • Design nümunələri developers ümumi problemlərin ortaq bir reusable həll yanaşma riayət kömək etmək üçün hər texnologiya istifadə olunur.
  • Design Patterns konkret deyil, lakin konseptual var.
  • Başqa dillərdə Like, PHP də ümumi dizayn nümunələri istifadə edir, olan bəzi yuxarıda izah edilir.

 

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share