GithubHelp home page GithubHelp logo

my_ci's Introduction

my_ci

Codeigniter 3x sürümü üzerinde özelleştirilmiş ve bazı yeni yaklaşımlar uygulanmış versiyon.

Demo Uygulama:

Yapılacaklar listesi uygulaması.

Admin Panel:

url: admin/login
username: admin
pw: 1

Veritabanı:

my_ci.sql dosyasını oluşturacağınız veritabanını içine import ediniz.

Neler var?:
  1. View katmanı için twig engine entegre edildi.
  2. Katmanlı mimari olarak Service katmanı kullanıldı ve business logic dediğimiz iş mantığı buraya taşındı.
  3. Veritabanı ile haberleşme Service katmanı üzerinden yapıldı.
  4. Service katmanı ve Model katmanı için Abstract sınıflar oluşturuldu ve tekrar eden ortak operasyonlar tek bir yerde yazılarak bu işlemlerin tekrar edilmemesi sağlandı.
Service ve Model Katmanı

Kullanıcı id" değeri 1 olan kaydı çekmek istediğimizde aşağıdaki işlemi yapmamız yeterli olacaktır.

  1. Öncelikle User adında service ve model sınıflarını oluşturuyoruz ve bunları Abstract sınıflardan türetiyoruz.
  2. Daha sonra Controller sınıfı içerisinde $this->user_service->find(1) çağırımını kullandığımızda bu işlemi başarılı bir şekilde gerçekleştirmiş oluyoruz.

Farkettiyseniz burada oluşturulan Service yada Model katmanında her hangi bir geliştirme yapmadık. Çünkü ortak olan kısımlar Abstract sınıflarda zaten yazıldığı için doğrudan kullanabildik.

Abstract Sınıflarda Ortak Olan Metodlar:
  1. insert: ekleme
  2. update: güncelleme
  3. delete: silme
  4. find: tek satırlık kayıt getirme
  5. findAll: verilan kısıta göre tüm kaydı getirme
  6. findOneBy: verilan kısıta göre tek satır getirme

Model katmanında hiç bir sorgu yazmadan Abstract sınıflarda ortak olarak yazılmış bu hazır fonksiyonları çağırarak işlemlerinizi yapabilirsiniz. Böylelikle ortak işlemleri her Model katmanında tekrar tekrar yazmaktan kurtulmuş olursunuz.

Neden Service Katmanı Var?:

business logic dediğimiz iş katmanı Controller sınıfların içinde değil Service katmanının içinde yazılarak bu iş mantığı yani kodumuzun asıl işlemleri yaptığı kısmın tekrar kullanılabilirliği sağlanmıştır.

Örneğin: Projemizde ürün arama bölümü olsun ve bunu Controller sınıfı içerisinde doğrudan yazdığımızı varsayalım. Yarın web servis geliştirme ihtiyacı doğduğunda Controller sınıfını tekrar üretip kullanamayacağımız için bu iş mantığımızı tekrar kodlamamız yada kopyalamamız gerekecekti.

Burada iş mantığını ara bir katmana taşımış olmak bize her yerde bu kodu kullanabilme imkanı sağladı. Bu sayede servis katmanından ürün arama metodunu gerekli parametrelerini vererek hem Controller içinde hemde Api katmanında çağırarak bu kodun tekrar kullanılabilirliğini sağlamış olduk.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.