PHP Object Oriented ya da değil?

11 Cevap php

Ben PHP Object Oriented özelliklerini kullanmadan yazdığı bir webapp bir başlangıç ​​var.

Geri gitmek ve ben bitirdim parçalarını yeniden yazmak için buna değer olup olmadığını ben gerçekten bilmiyorum. Nesne yönelimli PHP iyi bir çalışma uygulaması tamamını veya bir kısmını yeniden değer mi?

11 Cevap

Eğer tamamlanmamış bir uygulama var olduğunu göz önüne alındığında ben bir nesne tabanlı bir uygulama içine elden geçirilmesi muhtemelen yararlı olacağını söyleyebilirim.

Düşünün bir şey ucu uygulamanın beklenen boyutudur. Dayalı belli bir karmaşıklık Nesne Aşağıda öğrenme deneyimi dışında overkill olabilir.

Ben üniversite derslerinde onlara benim ilk giriş korkunç çünkü veba gibi nesneleri kaçınarak başladı. Ben biraz yakın zamanda php nesneleri uygulanan bir proje üzerinde çalışmak zorunda. gerekli değişiklikleri yaparak, diğer projelere göre daha kolay oldu. Ben o zamandan beri sık sık nesne modeli çalıştı ve hızlı oluşturma ve kolay bakım için çok kullanışlı bulmak.

Sadece fikir birliği ile katılmıyorum ... Ben çoğu durumda hiçbir söyleyebilirim. Değil zaten ticari kodu akademik bir egzersiz olarak. Öyle değil mi çalışıyor eğer yeniden yazmak. Eğer bit eklemek / değiştirmek için gitmek zorunda kalırsanız, o zaman (orada zaten kodu değişiyor zaman üstlenmeden SO üzerinde mesajların çok, ve sadece onun uğruna) OO uygulamalarına yönelik refactor.

OOP bir sürü yapmadıysanız Uygulamada, daha sonra küçük bir başlangıç ​​ve bunun için bir fikir almak isteyeceksiniz.

Eğer temel bir kolu olsun, iyi başlayanlar (Ben Head First kitap gibi) Patterns Tasarım için yol çok yararlıdır. Çoğu PHP kitaplar oldukça kötü OOP öğretirdi. Onlar miras hakkında size öğretmek, ancak genellikle miras üzerinde gevşek bağlantı ve lehine bileşimi hakkında size öğretmek değildir. Bir tasarım desenleri kitap size bu daha iyi bir fikir verecektir.

PHP hala OO hakkı "yapma" değil bir üne sahiptir. Ben bu adil olduğunu düşünüyorum, ama insanlar gerçekten OOP grokking olmadan başlamak için o kadar kolay ki aslında bir yansımasıdır yok. Ben bir uzuv çıkmak ve çoğunluk (hiç bu kadar hafif -% 51 diyelim) söyleyebilirim PHP programcıları OOP ile rahat değildir. Ben PHP iyi OO yapmak mümkün olduğunu düşünüyorum ve zaten dil ile rahat iseniz, becerilerini büyümek için harika bir yoldur.

EDIT:

Sadece feragatlerin bir çift eklemek için ...

  1. most PHP programcıları OOP ile rahat değil varlık hakkında yorumum geçerli SO kitleye geçerli olmaz!
  2. OOP ile rahat değildir düşündüren değil, bu sen değilsin if geçerlidir

Kesinlikle bir öğrenme deneyimi değer olacaktır.

Tipik cevap: "Duruma göre değişir."

Ben <, bir başlangıç-bitiş olarak ekran sayfa yazmak için eğilimindedir html> senaryosunu sayfası. Ama bu sayfada gerçekleşmesi şeyler nesneler vardı. Tür bir yoksul adamın ASP gibi. Eğer can cepten-baz çıkışı varken, ben Alwasy bir tarayıcıya damping veri olarak sıkıcı bir görev için çok hantal düşündüm.

Yani, iş kuralları ve veri erişim OOP vardı. Sunum senaryo oldu.

Eğer not cepten olan iş kuralları varsa, ben ciddiye iki koşullarına nesneler gibi bu yazı düşünün: (1) "Eğer bunu yapmak için zaman / çaba / para var mı?" ve (2) "Eğer hayatınızı kolaylaştıracak iyi bir PHP IDE var mı?" dir Eğer çalışırsa, ve Notepad + + yazma anlamına değişen, sonra bitti çağırır. :-)

Ben kritik olduğunu söyleyemem, ama uygulaması ile çok daha ileri gidecek eğer bir anıtsal görev kadar değil iken, ben şimdi bunu yapıyor tavsiye ederim. Ben iyi yazılmış bir cepten programın idame kadar ön maliyetleri ağır söyleyebilirim. Eğer birlikte gitmek gibi fazla kod refactor mümkün olacağını düşünün özellikle.

Nesne yönelimli techinques Öğrenme özellikle gelecekte diğer dillerde programlama için, gerçekten yararlı olacaktır.

Eğer sadece sadece uygulamayı başladığımdan beri, sen yeniden ve yazdım parçaları artırabilirsiniz. Bu sizin tarihine bağlıdır.

Benim uygulamalarının daha iyi oldu PHP OOP geçiş asla pişman, onlar daha kısa mantain ve ugprade daha kolay ve ben iyi kod yazdım bilerek benim öz ile daha iyi hissettim.

İki olasılık vardır: app sadece şu anda çalışmak zorunda olan bir tek-off ve adapte genişletilmiş veya değiştirilmiş, dokundu asla ya or else sizin app tutacak şeyin başlangıcıdır ile çalışan ve uzun süre üzerinde kullanarak.

Eski ise, mükemmel kullanışlı kod bozmazlar. Size zaman yapacak daha iyi şeyler var.

Ikincisi ise, aklınızda bu PHP, hakkında önemli bir gerçeği taşımaları gerekir: poorly written PHP is a nightmare to maintain. kötü olarak kötü Perl yazılı değil - çünkü ne? - Ama yeterince kötü olduğunu er ya da geç, bir zaman makinesi çalmak Eğer şimdi kendinizi korumak bulmak kod yazdı an geri seyahat ve bir IcePick ile göz çukurlarının kendinizi bıçaklamak için güçlü bir dürtü hissedeceksiniz.

Zamanla bu kodu korumak için gidiyoruz eğer öyleyse, doğru yapmak için zaman ayırın. Bunun anlamı şudur: çiftleşmiş sistemi çeşit, hayır PHP, HTML içine gömülü etiketleri, ayrı işlevler için ayrı dosyalar, ve classes classes classes!

Sizin göz çukurları size teşekkür edecektir.

Ben denemek söylemek ve Ö.Ö. gitmek istiyorum çünkü ne daha kolay tekrar edilebilir olması usul if done right

Ben de OO daha prosedürel sonra organize olduğunu söyleyeceğiz. Senin küçük ölçekte özensiz kod OO ya paçayı kolay olduğunda. Daha büyük projeler için zaman ancak usule çok daha organize ve düşünülmüş olmalıdır. Bazı büyük projelerde olarak OO biraz daha kolay daha organize şeyler yapma olmaya zorlamak için eğilimindedir nerede.

Ben burada diğer cevapları yinelemek istiyorum. Bu uygulama boyutu ve ne kadar OOP öğrenmek istiyorum bağlıdır. Ama PHP ile OOP öğrenme dikkatli olurdum.

PHP4 bunun üzerine tokatladı bazı cepten unsurları vardı ne kadar PHP is nesne yönelimli ... gelince, PHP5 iyi ama dile pişmiş değil. PHP iki şekilde çalışır, ve ben şahsen seçebilirsiniz gibi.

Aklımda, biz thorouly Object (sınıf örneği) kavramını atmak olabilir phper, sadece dizi ve Mod Class gerekir:

Bu yöntem olarak ilk modunda tüm diziler herhangi bir dizi işlevi destekler:

<?php
$array1->array_flip(this);
?>

Kullan "-> modu ()" minimal veri seti doğrulamak, ve sonra mod sınıfı geçmek için:

<?php
$array1->mode('class1', $success);
?>

Herhangi bir mod sınıfı, var - içinde ">) (inşa", ama var "-> validate ()" minimal veri kümesini doğrulamak için.

The array in a mode still could use array function as its method, but after using any of them the array will be switched back into basic array mode, and we need to use "->mode('class1', $success);" to switch mode back.

Radikal düşünce veri merkezli programlama, biz veriyi (dizi) ve aktivite (sınıf yöntemi) ayırmak gerekir.

Biz OO (nesne yönelimli) parçaları kurtulmak için, php motor değiştirmek ve Mod Sınıf destek verebilecek, biz MyPHP diyebiliriz.

For example: $array_man1 could be set into two modes:cls_normal_man and cls_crazy_man:

<?php
$array_man1->mode('cls_normal_man')->normal_method1()->mode('cls_crazy_man')->crazy_method1();
?>