-
Ü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.
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
1118
-
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
-
Üyelik
05.10.2016
-
Yaş/Cinsiyet
38 / 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.
-
Ü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..
-
Üyelik
05.10.2016
-
Yaş/Cinsiyet
38 / 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
-
Ü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)
-
Üyelik
14.08.2016
-
Yaş/Cinsiyet
29 / 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.
-
Ü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 :)