-
Üyelik
28.11.2013
-
Yaş/Cinsiyet
30 / 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?
1 kişi bu mesajı beğendi.
-
Üyelik
14.01.2018
-
Yaş/Cinsiyet
52 / 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.
3 kişi bu mesajı beğendi.
VipTema
Vip Tema Web Tasarım
Kullanıcı
-
Üyelik
29.06.2011
-
Yaş/Cinsiyet
38 / E
-
Meslek
Vip Tema Web Tasarım A.Ş.
-
Konum
Tekirdağ
-
Ad Soyad
Ö** I**
-
Mesajlar
1393
-
Beğeniler
704 / 703
-
Ticaret
21, (%100)
SancarSaran gerek benzetmeleriyle ve basitliğiyle süper bir anlatım olmuş keyifle okudum. Teşekkürler.