PHP

kategorisine ait gönderiler

Model Katmanı ve Veritabanı İşlemlerini Kolaylaştırmak

2 Aralık 2016 Cuma günü PHP başlığında

Model Katmanı ve Veritabanı İşlemlerini Kolaylaştırmak

İlk yazıda bahsettiğimiz gibi, model katmanı veritabanı işlemlerimizi düzene sokmak ve kolaylaştırmak adına ihtiyaç duyduğumuz bir katman. Bu yazıda yapacağımız MVC sisteminin model çekirdeğini kodlayacağız. Haydi başlayalım.

/app/core/model.php:

class model
{
    /**
     * Veritabanını nesnesini tutar
     * @var \PDO
     */
    public $db;

    /**
     * Veritabanı nesnesini oluşturur
     */
    public function __construct()
    {
        $this->db = new PDO(DB_DSN, DB_USR, DB_PWD);
    }
}
Devamını okuyun »
Controller ve View Çekirdek Sınıflarını Oluşturmak

2 Aralık 2016 Cuma günü PHP başlığında

Controller ve View Çekirdek Sınıflarını Oluşturmak

Controller çekirdek sınıfı, controllers dizininde oluşturduğumuz her controller sınıfını genişletmek (extend) için kullanacağımız sınıftır. Bu sayede view dosyalarını çağırıp, model sınıflarını kullanabileceğiz.

View Katmanının Çekirdek Sınıfı

/app/core/view.php:

class view
{
  /**
   * Görünüm dosyasını yorumlayan metod
   * @param string $view görünüm dosyası
   * @param array $params parametreler
   */
  public static function render($view, array $params = [])
  {
    /**
     * Eğer dosya varsa
     */
    if (file_exists($file = VDIR."/{$view}.php")) {
      /**
       * $params dizesindeki verileri extract fonksiyonu
       * ile değişken haline döndürüyoruz
       */
      extract($params);

      /**
       * Çıktı tamponlamasını başlatıyoruz
       */
      ob_start();

      /**
       * View dosyası içeriğini çağırıyoruz
       */
      require $file;

      /**
       * Çıktı tamponun içeriğini döndürüp siliyoruz
       */
      echo ob_get_clean();
    /**
     * Dosya yoksa programı sonlandır
     */
    } else {
      exit("Görünüm dosyası bulunamadı: $view");
    }
  }
}

Burada view sınıfı içerisine, statik bir render sınıfı oluşturuyoruz. Statik sınıflar, normal fonksiyonlar gibi ulaşılabilen sınıflardır. Burada bunu kullanmamızın özel bir sebebi yok.

Devamını okuyun »
MVC’de Giriş Sayfası, Ayarlamalar ve İlk Controller

2 Aralık 2016 Cuma günü PHP başlığında

MVC’de Giriş Sayfası, Ayarlamalar ve İlk Controller

PHP ile bir uygulama yapmaya başlarken öncelikle yapmamız gereken dizin veveritabanı gibi birçok etkenin hiyerarşisini kafamızda tahayyül etmektir. Ardından dosya ve dizinleri oluşturarak işe başlarız. İşte bunların yapısını, sistem içerisinde de rahatça kontrol edebilmek için bazı sabitlere ihtiyaç duyarız. Sabit tanımlamalar ile dizinlerdeki dosyaları rahatça sayfaya dahil edebilecek (require, include) ve işlemlerimizi yapabileceğiz. Basit bir MVC sistemi kodladığımız için bunu en basit haliyle, index.php içerisinde yapacağız. Başlayalım:

Devamını okuyun »
MVC Uygulaması İçin İlk Adımlar: App Sınıfı

2 Aralık 2016 Cuma günü PHP başlığında

MVC Uygulaması İçin İlk Adımlar: App Sınıfı

İkinci yazıdan merhaba arkadaşlar. Bu yazıda çalışmalara başlayıp ortaya güzel şeyler çıkaracağız. Evvela MVC uygulamasında kendimize uygun bir dizin yapısı belirlememiz gerekiyor. Bizim yapacağımız sistem şu şekilde olacak:

/app
  /controllers
    defaultController.php
    postController.php
  /core
    app.php
    controller.php
    model.php
    view.php
  /models
    post.php
  /views
    -görünüm dosyaları-
index.php
Devamını okuyun »
Yeni Başlayanlar İçin PHP’de MVC

2 Aralık 2016 Cuma günü PHP başlığında

Yeni Başlayanlar İçin PHP’de MVC

Nedir bu MVC? Neden ihtiyaç duyulur? Nasıl ve nerelerde kullanılır? gibi birçok soru var kafada. Hele ki yeni bir PHP meraklısıysanız, bu sorular daha çok ve derinden gelir.

Ben, programlamayı vakit geçirmek için kullanan, ortaya bir şeyler çıkarmaya çalışan birisi olarak PHP ile makarna kod yazdığım zamanların ardından MVC ile tanıştım. Tanıştıktan sonra, bir daha görüşmedim çünkü yeterli türkçe kaynak yoktu/bulamamıştım ve tam manasıyla kavrayamamıştım. Buna istinaden şimdi aynı şekilde, bildiğim kadarıyla MVC’yi tarif edeceğim ve birkaç örnek vereceğim. Tariflerim hakkında bilgi alabilmek için, PHP’de biraz olsun OOP yani nesne yönelimli programlama bilginizin olması gerekiyor. Olmasa bile biraz zorlamanızı öneririm.

Devamını okuyun »
Basit PDO Sınıfı ile Veritabanı İşlemlerini Kolaylaştırmak

15 Ağustos 2016 Pazartesi günü PHP başlığında

Basit PDO Sınıfı ile Veritabanı İşlemlerini Kolaylaştırmak

Neden böyle bir şeye ihtiyaç var diye düşünebilirsiniz belki. Ama acemi ve yeni öğrenen arkadaşlar için böyle bir şey paylaşmak gerekiyor. PDO çok fazla kafa karıştıracak bir şey değil aslında ama öğrenme sürecinde sıkıntı çıkarabiliyor. Özellikle de mysql_connect() fonksiyonundan geçişlerde sancılı olabiliyor. Aşağıda yazdığım sınıf oldukça basit bir kullanıma sahip.

Devamını okuyun »
PHP ve Sabit Tanımlamalar

27 Haziran 2016 Pazartesi günü PHP başlığında

PHP ve Sabit Tanımlamalar

PHP’de değişkenlerden başka kullanabileceğimiz bir de sabitler vardır. Sabitler, tanımlandıktan sonra değiştirilemezler. Birkaç örnek verelim.

define('SABIT', 'foo');
var_dump(SABIT);

Sabitler, programlama dillerinde genellikle büyük harflerle tanımlanırlar. Bu genel bir gelenektir, daha farklı biçimlerde de kullanılabilir elbette. Sabitleri bir kere tanımladıktan sonra başka bir yerde değiştiremiyorsunuz ve yeniden tanımlayamıyorsunuz. Yani şöyle:

Devamını okuyun »
PDO'nun En Kolay Hali

9 Şubat 2016 Salı günü PHP başlığında

PDO'nun En Kolay Hali

Genelde, mysql fonksiyonundan PDO’ya geçişte biraz zorlanılır. Bu yazıda, PHP ile veri çekerken ve eklerken en çok kullandığımız yöntemlerin PDO karşılığını yazacağım.

PDO ile MySQL Veritabanına Bağlanmak

$pdo = new PDO('mysql:host=localhost;dbname=veritabani;charset=utf8', 'kullaniciAdi', 'sifre');

Bu satır, mysql_connect() satırıyla aynı işi hatta daha fazlasını yapar. Hem belirttiğimiz veritabanına bağlanır hem de karakter setini belirler. Böylece türkçe karakter sıkıntısı yaşamayız.

Devamını okuyun »

15 Eylül 2015 Salı günü PHP başlığında

SQL’de Sonraki ve Önceki Satırdaki Veriyi Getirmek

Bir gönderi/blog sistemi düşünelim. Hatta WordPress’ten örnekleyebiliriz. Bazı bloglarda, bir gönderiye girdiğimizde sonraki ve önceki gönderiler için bağlantı olduğunu görürüz. Bunlar için ayrı veriler çekmemiz gerekiyor. Örnek verirken bir model dosyasında kod yazıyormuş gibi örnekleyeceğim, SQL kodundan yola çıkarak sizde geliştirebilirsiniz.

class Post extends Model
{
  public function nextPost($id)
  {
    $sql = 'SELECT * FROM posts WHERE id > ? ORDER BY id ASC LIMIT 1';
    $sth = $this->db->prepare($sql);
    $sth->execute(array($id));
    return $sth->fetch();
  }

  public function prevPost($id)
  {
    $sql = 'SELECT * FROM posts WHERE id < ? ORDER BY id DESC LIMIT 1';
    $sth = $this->db->prepare($sql);
    $sth->execute(array($id));
    return $sth->fetch();
  }
}
Veritabanındaki Tablonun Varlığını Kontrol Etmek

19 Temmuz 2015 Pazar günü PHP başlığında

Veritabanındaki Tablonun Varlığını Kontrol Etmek

PHP’de PDO ile çalışırken bir tablonun var olup olmadığını kontrol etmek için aşağıdaki yöntem kullanılabilir:

public function checkTable()
{
  try {
    return $this->fetchRow('SELECT * FROM posta');
  } catch(\Exception $e) {
    return false;
    // Veya $this->exec('CREATE TABLE IF NOT EXISTS posta ...');
  }
}

Bir kurulum aşamasında, veritabanındaki tabloları yapılandırma sırasında işe yarayabilir.