wmaraci reklam

Klasik PHP vs OOP (Tartışma)

9 Mesajlar 1.157 Okunma
wmaraci reklam

ecarpar ecarpar WM Aracı Kullanıcı
  • Üyelik 18.04.2014
  • Yaş/Cinsiyet 43 / E
  • Meslek bilişim ve e-ticaret uzmanı
  • Konum İstanbul Anadolu
  • Ad Soyad E** C**
  • Mesajlar 317
  • Beğeniler 23 / 90
  • Ticaret 0, (%0)
Bir süredir irili ufaklı bir çok php iş ve işler yaptım bir çok projede bulundum, bir süredir aklımı kurcalayan bir durum söz konusu OOP a geçmelimi yoksa gerek yok bildiğim yoldan mı gideyim ?

Örneklendirmek benim olayı anlayabilmem açısından daha kolay olacağı için Basitinden bir eticaret sitesinin mantığından gideyim istedim.

Ne vardır E-ticaret sitesinde kolaya en temele indirgeyecek olursak eğer,
Kategoriler
Ürünler
Slider

Ürünler üzerinden gideyim istedim,
Ürünlerde için ne yapıyoruz, bir form sayfası oluşturup ürün eklemek için olan verileri ürünekle.php gibi bir dosya ya atıyoruz, oradanda kayıtları alıp MYSQl e aktarıyoruz mantık bu, Update ve silme işlemleri içinde gene birer adet php dosyası üzerinden çalışmalar yapıyoruz,

kategoriler için farklı bir MYSQL tablosu üzerinde işlemlerimi gerçekleştiriyoruz mantık gene aynı ekle, güncelle ve kaldır için birer php dosyasına form verileri gönderiyoruz.

BU tip bir işlem de OOP un faydası ne olabilir ?
Projeyi tek kişi yazıyor ve güncelliyor ise OOP un ne gibi artıları olur.. Öyle olmazmı çoka rtısı olur şeklinde değil elle tutulur cevaplar daha doyurucu olacağı için açıklayıcı olarak cevap verirseniz sevinirim.

Mantıklı güzel açıklamalar olur ise akla yatkın olur sa PHP ye başlayacak kişiler içinde etkili olacağından eminim.

NOT: Şu araba örneğini vermeyin :) o bana hiç bir şey anlatmıyor yukarıdaki örnek için.
Bu arada OOP dan kastım OOP Mysql bağlantısını alıp kullanmak yada 3 class dosyası ile gene benim ilk mantığımla aynı şeyleri yapmak değil.
 

 

wmaraci
reklam

ontedi ontedi www.ontedi.com Kullanıcı
  • Üyelik 03.10.2013
  • Yaş/Cinsiyet 44 / E
  • Meslek Yazılım Uzmanı, Matematikçi
  • Konum Ankara
  • Ad Soyad S** T**
  • Mesajlar 1119
  • Beğeniler 325 / 324
  • Ticaret 2, (%100)
OOP için herkes bir şeyler söyler.

Ben sadece şunu söyleyeceğim. Mesela bir makale tablon var diyelim.

CREATE TABLE [tblMakaleler] (
[makale_ID] INT PRIMARY KEY NOT NULL IDENTITY(1,1),
[baslik] NVARCHAR(255),
[ozet] NVARCHAR(1000),
[icerik] NVARCHAR(MAX),
[eklenme_tarihi] DATETIME NULL DEFAULT (getdate()),
[yayin_durumu] TINYINT DEFAULT ((0))
)


Böyle bir MSSQL tablo örneği var diyelim. Düz php, asp vs.. gibi kodlama yaparsan script içerisinde sütun adlarıyla değerlerini eşleştirip insert yada update yapabilirsin.

Fakat bu tblMakaleler adlı tabloyu bir class üzerinde karşılayıp insert ve update işlemini bunun üzerinden yaparsan sütun adlarını sadece daha az yazıp sütun isimlerini yazarken daha az hata yapacaksın.

Tablonun class yapısı


public class tblMakaleler
{
public int makale_ID { get; set; }
public string baslik { get; set; }
public string ozet { get; set; }
public string icerik { get; set; }
public DateTime? eklenme_tarihi { get; set; }
public byte? yayin_durumu { get; set; }
}


Dersen ki bu OOP için çok iyi bir örnek mi, değil fakat iş sürecinde daha az hata ve daha az iş için gerekli.
 

 

www.ontedi.com
www.cizgi.site

ahmet47 ahmet47 WM Aracı Kullanıcı
  • Üyelik 23.08.2014
  • Yaş/Cinsiyet 29 / E
  • Meslek Girişimci, Developer
  • Konum Diğer
  • Ad Soyad A** V**
  • Mesajlar 145
  • Beğeniler 39 / 33
  • Ticaret 4, (%100)
OOP ile ilğili yazılar ve videolara bakın ne kadar yararlı olduğuna siz karar verin.
Turkcell Geleceği yazanlar: https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-101/nesne-yonelimli-programlama
İstanbul ün.(İçinde araba örneği de var) http://muhendislik.istanbul.edu.tr/endustri/wp-content/uploads/2014/10/Ders2.pdf
Şadi Şeker Evren'in bir videosu (Javadan örnek ama) https://www.youtube.com/watch?v=7vUlrVLOxZA&index=2&list=PLh9ECzBB8tJPFTpuHKhYayis0H9pS6_rI
Bu adamı izleyin size çok şey katacaktır.
 

 

¯\_(ツ)_/¯

SizofrenikDev SizofrenikDev WM Aracı Kullanıcı
  • Üyelik 05.10.2016
  • Yaş/Cinsiyet 37 / E
  • Meslek Yazılım Uzmanı
  • Konum İstanbul Avrupa
  • Ad Soyad H** B**
  • Mesajlar 187
  • Beğeniler 8 / 49
  • Ticaret 2, (%100)
OOP siz yaptığın herşeyi OOP ile yapabilir, OOP ile yaptığın herşeyi OOP siz de yapabilirsin.
OOP ile 100 satırda yaptığın işi, OOP siz 1000 satırda yaparsın,
OOP ile genişletilebilir bir yapı kurabilirsin, OOP siz kuramazsın,
OOP ile yazılım zekanı ve düşünme yeteneğini geliştirirsin, OOP siz olduğun yerde kalırsın.

OOP yapısını bilen bir yazılımcının, OOP yapısındaki farklı yazılım dillerini öğrenmesi daha kolaydır. Farklı diller öğrendikçe bildiğiniz diğer dillerdeki yazdığınız kod yapısı değişir.

Kısacası, OOP biz yazılımcıların olmazsa olmazıdır.
 

 

wmaraci
wmaraci

ecarpar ecarpar WM Aracı Kullanıcı
  • Üyelik 18.04.2014
  • Yaş/Cinsiyet 43 / E
  • Meslek bilişim ve e-ticaret uzmanı
  • Konum İstanbul Anadolu
  • Ad Soyad E** C**
  • Mesajlar 317
  • Beğeniler 23 / 90
  • Ticaret 0, (%0)
OOP ile 100 satırda yaptığın işi, OOP siz 1000 satırda yaparsın,
OOP ile genişletilebilir bir yapı kurabilirsin, OOP siz kuramazsın,

1. Misal bir formdan verileri alıp php bir yapıya POSt/GET edip database e bağlanıp veri yollama işlemini OOP ile dahamı kolay yapıyoruz ne değişiyor?
2. Genişletilebilirden kastınız, yazdığım bütün projelerin üzerinde değişiklikler yapıp güncellemeler yapabiliyorum tabi OOP bilmediğim için işin o tarafında nedenli kolay olur bilemiyorum.

Örneğin ben sitelerinde yapı olarak include kullanıyorum sitemin css leri bir yerden üst alt kısım tek bir yerden include ediliyor, bu durum beni çok yükten kurtarıyor yeni bir css eklemem gerektiğinde yada navigasyon bar da değişiklik yaparken sadece bir sayfadan yapıyorum, mantık neredeyse aynı galiba OOP ta da. Geçen izlediğim bir video da OOP mantığı ile basit bir class ve 1-2fonksiyon yardımı ile belli bir klasördeki bütün dosyaları iclude ediyordu yazan kişi, sanırsam bundan ibaret değil OOP ama bana mantığı aynı geldi kendi yaptığımla, bende bir php dosyasına girip el ile css in yerini ekliyorum sadece.
Aslında cidden OOP ile site hazırlayan birileri ile konuşup şu konuyu tam bi kafamda oturtsam bende geçeyim derim gibi ama..
 

 

SizofrenikDev SizofrenikDev WM Aracı Kullanıcı
  • Üyelik 05.10.2016
  • Yaş/Cinsiyet 37 / E
  • Meslek Yazılım Uzmanı
  • Konum İstanbul Avrupa
  • Ad Soyad H** B**
  • Mesajlar 187
  • Beğeniler 8 / 49
  • Ticaret 2, (%100)
OOP dediğin kavram senin fonksiyonlarını yazdığın dosya değil.
OOP de fonksiyonları Class içerisine yazarsın.

Örnek olarak küçük bir kod paylaşıyım.

public interface IGenericRepository where T : class
{
IEnumerable GetAll();
IEnumerable GetAll(Expression> orderBy, bool desc = false);
void Delete(Expression> predicate);
void Delete(T entity);
}


Yukarıdaki interface Generic olarak gelen Class tipine tanımlı olan Methodları implemente eder.

public class GenericRepository : IGenericRepository where T : class
{
protected Data.Entity.Entities _entities;
protected readonly IDbSet _dbSet;

public GenericRepository(Data.Entity.Entities context)
{
_entities = context;
_dbSet = context.Set();
}

public IEnumerable GetAll()
{
return _dbSet.AsEnumerable();
}
public IEnumerable GetAll(Expression> orderBy, bool desc = false)
{
return desc ? _dbSet.OrderByDescending(orderBy).AsEnumerable() : _dbSet.OrderBy(orderBy).AsEnumerable();
}
public void Delete(T entity)
{
_dbSet.Remove(entity);
}

public void Delete(Expression> predicate)
{
var entity = _dbSet.Where(predicate).ToList();
if (entity == null) return;
entity.ForEach(x => _dbSet.Remove(x));
}
}

Yukarıdaki Kod ise, Implemente edilen class için DB methodlarını oluşturur.

Core.Repository.GenericRepository repo = new Core.Repository.GenericRepository();
//Kayıt Silmek
repo.Delete(x => x.Id == 10);
repo.Save();
//Onaylanan Müşterileri Listeler
repo.GetBy(x => x.IsApproved);

Yukarıdaki kod ise, DB de bulunan Customer tablosu üzerinde işlemin nasıl yapıldığını gösterir.

Bu sadece standart DB işlemlerini Generic olarak bir kaç satırda yapmayı sağlar.

Interface içerisine yeni bir method eklendiğinde, diğer Class larda herhangi bir işlem yapmadan direkt olarak kullanabilirsin.

OOP nin sonu yoktur bu arada :)

Bol şans
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
OOP yazmak avantaj yaratır.

Lakin bir projenin geliştirilmesi için gereksinim olarak, OOP mi, spagetti mi olmalı gibi bir soru olmamalıdır.

Eğer basit bir iş ise ve büyümeyecekse, zaman kısıtıda varsa en hızlı nasıl temiz şekilde yapabiliyorsan yap derim, bu seçim projeyi yapacak kişinin insiyatifindedir.

Ne bileyim, bir arkadaşıma bir site yaptım.

Asıl uzmanlık alanım enterprise java,c# olmasına rağmen.. hızlıca pek tecrübem olmadığı php ile geliştirdim.

çünkü projedeki asıl ihtiyaç.

responsive basit algılanabilri bir görünüm, iki adet tablo (ziyaretci ve mesaj tablosu) gerekiyordu.

php'yi 2-3 basit db crud işlemi için kullandım, bunun için ek kütüphaneler kullanmak yerine basit bir php dosyası içinde 6-7 fonksiyon ile hallettim.

orm kütüphanalerine ihtiyaç duymadım bu proje kapsamı içinde oldukça luzumsuz hantallıkta katardı.. projenin çapı bu, yeterli..

büyük, yada büyüyecek bir proje ise kesinlikle oop kullanmalısız.
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

adnan358 adnan358 WM Aracı Kullanıcı
  • Üyelik 14.08.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek Web Developer
  • Konum İzmir
  • Ad Soyad A** B**
  • Mesajlar 159
  • Beğeniler 54 / 42
  • Ticaret 1, (%100)
Yukarıdaki arkadaşlarında bahsettiği gibi OOP mu spagetti mi nasıl kullanıcaksan o projeyi yapan ve projenin kapsamına göre değişen bir durum.

Onun haricinde OOP yazmayı sadece db ye veri post etme olarak görmemelisin, yani olay daha geniş.
Sen kodunu OOP oluşturacak şekilde yazarsan Classlar vs. kullanırsan başka bir projende o classı başka bir class ile extend edip iş hızını %50 arttırmış olursun yada kendi class ına başkalarının yazmış olduğu classları extend edip yine hızlanırsın.
OOP çalışma, seni diğer elemanlara nasıl yardımcı olabilirim, arkamdan gelene nasıl temiz kod bırakabilirim diye kodu yazarken 40 takla attırabilir buda senin için fayda demektir.

Mesela UserAuth yapman lazım, bunların yönetimi vs.
Githubda bunlarla ilgili birçok class mevcut, bunları alıp kullanabilirsin yada bunları alıp kendi classların ile birleştirebilirsin.
Yani bu senin hayal gücüne kalmış bişey. Tamam basit bir projede include ile çözüyorsun ama atıyorum kullanmadığın bir dosyayı include da edebilirsin.
 

 

analogfikir analogfikir Osmanlı İmparatorluğu Kullanıcı
  • Üyelik 20.12.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yok
  • Konum Ankara
  • Ad Soyad A** G**
  • Mesajlar 888
  • Beğeniler 224 / 118
  • Ticaret 11, (%100)
Bana göre kendine yazılımcı diye bilmen için oop bilmen gerekli.
Biraz ağır olabilir ama benim yorumum budur :)
 

 

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