OOP PHP kullanarak değer mi?

8 Cevap php

Nesne Tabanlı Programlama iyi olup olmadığı konusunda pek çok tartışma vardır. Ancak, Php OOP kullanılarak yavaştır. Daha yavaş hızda (sınıflar bir sayfa yükler ve büyük web siteleri yavaş olmaya başlayacaktır her zaman başlatılmalıdır beri) ile prosedürel programlama ve daha hızlı ve OOP kullanmak için iyi bir ticaret olurdu.

Daha da önemlisi, bir sınıf içinde malzeme sarın ve statik işlevlerini kullanın ya da sadece bir önek eski ile birçok yalan işlevleri için daha iyi olurdu iyi olurdu: wp_function ().

8 Cevap

Evet, OOP kullanmak için hemen hemen her zaman iyi bir fikirdir. OOP kodlama bir tarzı olduğunu ve çoğunlukla kodlama stillerini dillerde kolaylıkla genelinde aktarılması mümkün olmasıdır.

Belli bir dil kullanmak, çünkü insanlar-kodlama stillerini kullanmayın. Kodlama tarzı onlar arzu hissediyorum şeyler yapmak için iyi bir yöntem sunar, çünkü insanlar kodlama stilleri kullanabilirsiniz. Bu nedenle, sürece temel unsurlar olduğu gibi (miras, sınıf özellikleri, vb), bu her zaman kodlama tarzda yazmak için geçerli olacaktır.

Hayır, onlara erişmek için prosedürel fonksiyonları kullanarak muhtemelen iyi bir fikir değildir. Muhtemelen bu durumu korumak için böyle bir şey yapmak zorunda olacak, çünkü bu.

function myFunc()
{
    global $class;
    $class->doMethod();
}

function myFunc2()
{
    global $class;
    $class->doMethod2();
}

Bu küresel devletin bir ton yaratır gibi kötü bir fikirdir.

PHP ile Ö.Ö. kullanma konusunda endişeleriniz nedeni hız ise, korkmayın: PHP çevresinde yavaş bir dildir. Eğer işlemci-yoğun maddeye nesneleri kullanarak hız kaybı için yeterli bir şey yapıyorsanız, hiç PHP kullanarak olmamalıdır.

Statik işlevleri açısından, bu bir tasarım seçimdir, ama ben tamamen statik fonksiyonları oluşur sınıfları kaçınarak tarafında err ediyorum. Orada önek boyunca bunun hiçbir yararı gerçekten ve bunun iyi bir fikir olmadığı sırf bir yapı kullanılarak.

Performansı hakkında aynı argümanlar geri gün içinde Objective C ve C + + hakkında yapılmıştır. Ve bu sorunun cevabı sürekli büyük, daha iyi ve daha hızlı oluyor kullanılabilir bellek ve işlemci gücü yararlanmak oldu.

Evet, OO çalıştırmak için daha fazla kaynak gerektirir. Ama OO kullanmanın faydaları OO uygulamalarını destekleyen (önemsiz olması muhtemeldir) donanım maliyeti $ $ ağır basmaktadır.

Ancak, yazılım performans endişe olmak iyi bir şeydir. Başlamak için bir yer biraz yanlış gibi Ancak usul vs oo başlık altında görünümlü. Sen usul veya OO (ve her ikisi de alakalı) olsun, başlamak için verimli kod yazmaya odaklanmış olması gerekir.

Akılda tutulması PHP orada hızlı platformu (Java, örneğin, onun popo tekmeler) PHP internette en çok trafik ağır web sitelerinin bazı güç için kullanılan olmayabilir olsa bile ki: yani Facebook.

PHP ve OO hakkında herhangi başka bir şüpheniz varsa, sadece (Zend göre) Zend ve Magento bakmak. Magento bellek kullanımı yukarı örneği başına 36MB olabilir bir VERY kaynak-yoğun platformdur. Ancak platformu kendisi hit milyonlarca taşıma kapasitesine sahiptir. Donanım kaynaklarının sağlıklı bir porsiyon düzgün yapılandırılmış bir sunucu ortamı OO uzak sunucu kendisi maliyetini gölgede kullanmanın tüm avantajlarını yapmak olmasıdır. Ama kümelenmiş bilgisayarlar bir dünyada, sizin için (sorumlu) mevcuttur işlemci gücü ve bellek kullanılarak DEĞİL - IMHO - klinik delilik.

Ben kuvvetle Chacha102 yanıt ile katılmıyorum.

Bu soruya doğru cevap birkaç kitap dolduracak - Burada 20 satır yazı boşver.

Her iki yaklaşım da avantajları ve dezavantajları var. Ben prosedürel olmayan usul ve nesne yönelimli programlama konusunda önemli deneyime sahip kendilerini iyi bir programcı düşünmek isteyen herkese tavsiye ederim. Yanı sıra SCRUM, kaskad ve RAD gibi farklı metodolojiler ile deneyim.

Prosedürel kodlama vs OO için PHPs uygunluğuna ilişkin, kesinlikle dilinin kökleri ikincisi olan (ancak Java ve ASP hem de oldukça gerçek OO dillerde daha melez olduğunu unutmayın).

Peronally, ben çok basit ya da davranış giderek tanımlanmış olması gerekir ve öngörülebilir ya bir şey üretmek için gerektiğinde usul kodu yazmak eğilimindedir. Davranış çalışma zamanında büyük ölçüde değişecektir karmaşık kodu yazarken Ancak, OO geliştirici zaman açısından çok daha verimli olmasını bulmak - kullanım-vakaların sonlu kümesi etrafında tabanlı varlık tasarımına rağmen.

Daha hızlı OO kod daha çalışacağını, çünkü her zaman prosedürel kod yazmak gerektiğini iddia:

1) is not necessarily true 2) totally ignores the relative cost of developer time vs hardware costs

Bir sınıf içinde bir şeyler sarın ve statik işlevleri kullanmak için iyi olurdu

Ad alanları PHP anda mevcut olduğu göz önüne alındığında, bu tavsiye ederim bir şey değil ad çarpışmaları önlemek ve gerçekten dağınık bir yoldur.

C.

Benim düşünceme göre, PHP geliştiricileri solely tek yönde gitmeye çalışmamalısınız. Bazı durumlarda (nesne-yönelimli vs usul), ihtiyacınız olan tüm birkaç genel işlevleri, diğer zamanlarda da nesneleri kullanmak daha faydalıdır olmasıdır. , Her şeyi bir yol ya da diğer zorlamayın esnek olması ve her bir durum için en iyi olanı kullanmayın.

OOP onun de-yararları daha fazla yararları vardır. See PHP OOP, What Are The Benefits?. Ayrıca OOP vs PP in PHP için bkz.

O kadar çok bilinmeyen değişkene bağlıdır, ve sonra hep ya hiç olmak zorunda değildir çünkü hiçbir mükemmel bir cevap gerçekten var.

Eğer MVC modeli uygulama bölünmüş Örneğin, size Model OO olmak var ama daha basitçe usul denetleyicisi tutmak olabilir.

Sadece grup ortak statik işlevleri için bir araç olarak sınıfları kullanabilir, ya da aktif kayıt deseni içine uzak onu çok sürebilir.

Eğer bir e-posta bir POST fırlatır, küçük bir tek sayfa webform'u inşa ediyorsanız, gerçekten Ö.Ö. gerekmez - belki kaldıraç varolan posta sınıfını içerir diye.

Kimse alıyorsun projeyi anlamadan size uygun tavsiye verebilir.

Bu senin tek endişe hızı ise, o OO will biraz daha yavaş olabilir, dedi. Ve OO bazı kazanımların taklit bile usul PHP yapabileceğiniz sinsi bir sürü şey var. Eğer büyük bir proje üzerinde alıyorsun sürece, ekledi havai çok anlamına asla. Ve büyük bir proje var zaman, OO artılarını kendi havai eksilerini ağır olabilir.

Evet uygulama .. büyüdükçe (ve olacak) bu size hayal kırıklığı birçok saat kurtaracak. Ve (her yerde kopyalama yapıştırma kodu) Kendini tekrar .. :)