wmaraci reklam

--------

5 Mesajlar 711 Okunma
pst.net
wmaraci reklam

BigBang BigBang Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 03.06.2018
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum İzmir
  • Ad Soyad B** Y**
  • Mesajlar 169
  • Beğeniler 20 / 39
  • Ticaret 0, (%0)
--------
 

 

wmaraci
reklam

ismail03 ismail03 WM Aracı Kullanıcı
  • Üyelik 28.11.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Ameliyathane Hemşiresi
  • Konum Afyon
  • Ad Soyad I** Ç**
  • Mesajlar 2633
  • Beğeniler 344 / 487
  • Ticaret 12, (%100)
Takipteyim cevap gelirse benide alıntılar mısınız?
BigBang

kişi bu mesajı beğendi.

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 51 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
Object Oriented Programming (nesne yönelimli programlama) ile birlikte kullanılan standart programlama desenleri.

Şimdi, evde dantel işleyen varsa bilirsiniz, bir araya gelir konu komşu, şurasını söyle yapacaksın burasını böyle yapacaksın diye temel kalıpları vardır.

Bu aynı yaklaşımın yazılımda ancak oop modelinde kullanılır. Yazılım dünyası bir çok sorun için bir çok temel çözüm üretmiştir.

Mesela diyelim, sınırsız kategori sistemi, bunun adı hieracial data tree olarak geçer 30 sene falan önce ideal bir teori kurulmuştur, biz konuda habersiz olduğumuz için oturur kendi başımıza icad çıkarır sonrada bir sürü sorunla cebelleşiriz. Ancak eğer bilgimiz olsa bu teoriyi kullanan bir yazılım üretir keyfimize bakardık.

Design Patterns te böyle bir şey ancak çok daha temel konular için geçerli.

Mesela ?
Yazdığınız projede, kullandığınız veri tabanı bağlantısının tek olmasını istersiniz. Bunun adı singelton pattern diye geçer.

Tabi şimdi ne alaka yaa. diyeceksiniz, çünkü siz projenizi standart mysql bağlantısı ile yapıp, mysql bağlantısını tutan değişkeni de global değişkenler arasında bir yere astınız. Oradan devam ediyorsunuz. Hatta öyle bir şey de yok, her sayfanın başında connect.php yi include edip sayfa içinde bir yandan mysql erişimi sağlayıp bir yanda echo ile çıktı veriyorsunuz.

Ancak idealleştirilmiş programlama ortamında global değişken kullanılmaz. Sadece php için değil, tüm yazılım dilleri için geçerli, işler büyüdüğünde globals başa beladır sadece.

Yani ben veri tabanı bağlantısını oturup elle açmam, ben yazılım bir noktasında, modeli çağırırım o eğer yoksa yeni veri tabanı bağlantısını gidip ayar dosyasındaki bilgileri okuyarak otomatik olarak oluşturur.

Şimdi aynı anda birden fazla veri tabanı erişimim var, ee her seferinde ben yeniden veri tabanı bağlantısı mı açacağım ?

Hayır, veri tabanı bağlantı kurucuyu singelton pattern ile yazacağım için ben veri tabanı işlemi yaptığımda önce bakıp daha önceden yapılmış bağlantı olup olmadığını kontrol edecek yoksa bağlantı yapacak varsa eski bağlantıyı getirecek.


class ConnectDb {
private static $instance = null;
private $conn;

private $host = 'localhost';
private $user = 'db user-name';
private $pass = 'db password';
private $name = 'db name';

// The db connection is established in the private constructor.
private function __construct()
{
$this->conn = new PDO("mysql:host={$this->host};dbname={$this->name}", $this->user,$this->pass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
}

public static function getInstance()
{
if(!self::$instance)
{
self::$instance = new ConnectDb();
}

return self::$instance;
}
public function getConnection()
{
return $this->conn;
}
}


şimdi bu class autoloader in eriştiği bir yerde durduğu müddetçe siz


$db = ConnectDb::getInstance();
$conn = $db->getConnection();
var_dump($conn);


yazarak veri tabanına erişirsiniz, her seferinde eriştiğiniz bağlantı aynı olur.

bu en basit tasarım desenidir, bunun gibi daha nice desenler mevcut, bir kısmının php nin realitesinde yeri yok, ancak zend framework gibi dibine kadar OO bilader modunda gidip sonunda devasa ve yavaş bir yapı oluşturursunuz.

OOP ve Design Patterns üzerine kavga gürültü çok olur, öğrenmeniz ve uygulamanız yerindedir, farz olduğu yerler vardır, mekruh a kaçtığı yerler vardır. Zaman ve tecrübe ister.
Okanisik ontedi BigBang

kişi bu mesajı beğendi.

Okanisik Okanisik Vip Tema Web Tasarım A.Ş. Kullanıcı
  • Üyelik 29.06.2011
  • Yaş/Cinsiyet 37 / E
  • Meslek Vip Tema Web Tasarım A.Ş.
  • Konum Tekirdağ
  • Ad Soyad Ö** I**
  • Mesajlar 1380
  • Beğeniler 699 / 702
  • Ticaret 21, (%100)
SancarSaran gerek benzetmeleriyle ve basitliğiyle süper bir anlatım olmuş keyifle okudum. Teşekkürler.
 

 

Vip Tema Web Tasarım A.Ş.
wmaraci
Mersin evden eve nakliyat

hsntngr hsntngr Kontör at Kullanıcı
  • Üyelik 21.09.2016
  • Yaş/Cinsiyet 30 / E
  • Meslek Full Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad H** T**
  • Mesajlar 1155
  • Beğeniler 99 / 327
  • Ticaret 3, (%100)
Genel olarak programlama dillerin kullanılan patternler diyebiliriz hocam. Büyük bir çoğunluğu php tarafından da kullanılıyor. SancarSaran çok güzel bir şekilde özetlemiş zaten mevzuyu ancak bir iki husus da ben ekleyeym.

Design pattern yani tasarım desenlerini kullanarak herkes tarafından rahatlıkla anlaşılan kodlar oluşturabilirsiniz. Mesela Sancar hocamın dediği gibi bir sınıf yazdınız. Sizle ve sizden sonra projeyi kodlayan herkes nasıl db bağlantısı yaptığınızı bilecek, gereksiz bağlantılar yapmayacaktır. Ayrıca getInstance metodunu ele alırsak.


public static function getInstance()
{
if(!self::$instance)
{
self::$instance = new ConnectDb();
}

return self::$instance;
}


Burada "singleton pattern" olarak bildiğimiz bir desen var. Siz eğer daha önceden bir instance oluşturmuş iseniz, ikinci querynzde yeni bir bağlantı sınıfı oluşturmayıp mevcut instanceyi tekrar tekrar kullanabiliyorsunuz. Bu hem verilerinizi sonradan kullanabilme olanı sağlar hemde aynı sınıfın gereksiz yere çoğaltılmasını ve ramin boş yere doldurulmasını engeller.

Özellikle java tamamen oop'ye dayandığı için bu tarz patternler çok yaygın olarak kullanılıyor. Phpde de mvc patternler sağolsun (bakın bu da bir design pattern) proje baştan sona classlar kullanılarak oluşturulduğu için bu patternler her alanda kullanılıyor. Bu patternler sayesinde insanlar belli bir kalıba uygun olarak kodlanıyor böylece yazdığınız projeyi devam eden veya sizinle birlikte aynı anda geliştiren insanlar ne yazdığınızı daha rahat okuyup anlayabiliyorlar, daha kolay geliştirebiliyorlar.

Ayrıca bu patternleri kullanırsanız, sizden önce bu patternleri geliştiren insanların tecrübelerinden faydalanacağınız için hem kodunuzu daha kısa sürede yazarsınız, hem de ileriye dönük beklenmedik hatalar ile fazla karşılaşmazsınız..

Çeşit çeşit faydaları var yani hocam :)

ek olarak şu linkte bu patternleri görebilirsiniz (https://designpatternsphp.readthedocs.io/tr/latest/README.html)
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al