Birçok popüler opensource PHP uygulamalar düz komut Neden

3 Cevap php

This is part observation, part question.
First the observation:
While everyone talks of modular programming, OOP, procedural done right, aspect oriented, design patterns, etc., several popular opensource PHP apps are plain script files with the structure being controlled by includes and requires.

This looked stupid to me till I faced a recent issue with my shared web host - they don't support MySQL stored procedures on shared hosting. I checked out many competing shared hosting packages - same story.
Then I rewrote the code using SQL queries and some static functions in DB-handling class.
That was when I realised that the said PHP projects actually take into account the whole spectrum of web hosting packages and so decide to keep the code as dumb as possible, so as to reach a wider user base.
The other thing is the reach of the script to newbies without a formal Software Engg background: Scripts are easier to hack for newbies.

Those two were the good reasons I saw to explain the phenomenon.
Make no mistake, the guys maintaining these projects are pretty good at software development, so it is not incompetence.
Sometimes they have spare cash too.

Şimdi soru: mantıklı başka hangi nedenler aklınıza?


EDIT: Ben şahsen başkaları tarafından işaret gibi, tek başına OOP hakkında değil hissediyorum, iyi kod yapısı cepten / Usul tarzı bağımlı değildir. Ben gördüm ve kodlanmış ettik birkaç fonksiyonları tabanlı PHP kendimi projeleri.

Eğer kod okumak için dosyayı açtığınızda Beni en çok rahatsız eden şey, klasör / dosya sistemi düzeni iyi olduğunu, dosya / klasör adlandırma büyük, belgeleme standartları takip edilmektedir, bol, but,, orada yüz if-then-else koşulları, sürüm denetimi, birçok dosya tuhaf burada ve orada çıktı tamponlama kullanımı, çerez manipülasyon kod, bazı sabitler içerir ve net yapısı.

At least I seem to be lost every time I try reading the code. But if I read code from Java or C# code bases, or even some other sidelined PHP apps - there is proper separation of code inside functions, templating is used for display and so on. Looks organised. Looks easily understandable.
Backward compatibility could be the issue for maintainers, but they would be open to making the next version in a more structured way. But that too does not happen!
Obviously, I'm missing something because those maintainers always work hard, after all.

3 Cevap

i 3 ana nedenlerini görmek:

  • uyumluluğu: PHP üzerine baştan OOP içermiyordu. eski PHP ortamları ile aşağı-uyumlu olması ve daha geniş bir kitleye ulaşmak için, statükoyu tutuyor.
  • çaba anahtarı: (!) onlar makineleri için değil, insanlar için kodu üretmek için eğilimindedir çünkü anahtarlama / OOP olmayan OOP'deki kabinin bir kod temeli üstlenmeden, bir sürü iş, benim görüşüme dönüşüm komut dosyası olan bir çözümdür. Bu çalışma zamanı açıdan Tamam ama bakım için korkunç.
  • team-kültür: onlar her şeyi iyi ve çalışma olduğunu söylüyorlar çünkü ben bazı PHP geliştiricileri konuştum, bazıları sadece, geçiş yapmak istemiyorum ...

PHP ile bir MVC framework kullanmak sürece, bu tür nesne senin çok fazla zaman alacağını (ASP gibi. NET vardır) odaklı bir yaklaşım. Aslında önce kendi çerçevesi tasarlamak gerekir.

Ben php gerçek bir nesne yönelimli yaklaşım kullanarak diyemem mümkün değildir. Eğer istedikleri yere nesneleri almak ve vb oturumda bunları strore için serialize ..

PHP MVC çerçeveler söz konusu olduğunda, gerçek bir nesne yönelimli yaklaşımı görebilirsiniz.

Zend Framework example için buradan kontrol

Zend Framework tek değildir.

Ama kelimeler "nesne yönelimli" PHP için yeni. Sadece gerçek PHP5 OOP sahip olarak kabul edilir. Yani doğru nesne yönelimli yaklaşım ile iyi komut olması için 1-2 yıl daha beklemek zorunda.