OOP vs functions.php [çoğaltmak]

5 Cevap php

Bu soru burada zaten bir cevabı var:

5 Cevap

Eğer bir sınıfta modellemek isteyebilirsiniz aynı verileri işlemek için çeşitli işlemler yapmak hangi bazı ortak veri varsa fonksiyonları, ne bağlıdır. Çalıştığınız tüm veri birbirleri ile hiçbir ilgisi olmadığını, diğer yandan gerçekten OOP kullanılarak bir yararı yoktur.

Örneğin belirtilen işlev bir sınıfın bir üyesi daha bir yardımcı işlev olduğunu.

OOP sonra sadece işlevlerini çağırarak daha ileri gider.

Sınıflar veri aynı sette işletmek veya aynı hedefi paylaşan fonksiyonları toplamak. Ama bir sonraki seviyeye DRY alarak sınıflar başka avantajları. Bunu defalarca tekrarlamak zorunda kalmazsınız fonksiyonları ile, bazı basit görevi kozalayabilirsiniz. OOP ile, encapsulate daha karmaşık görevler yapabilirsiniz bunu tekrarlamak zorunda kalmazsınız.

Eğer sırayla çeşitli işlevler için veri aynı tür geçmek eğilimindedir, bir sınıfını kullanarak düşünmek ve kurucusuna bu verileri geçmek ve sınıfta tasarruf edebilirsiniz. Bu şekilde, bu veriler her zaman geçmek zorunda kalmadan işlevleri çağırabilirsiniz.

Şimdi yaklaşık 10 yıldır PHP kullanarak oldum. Ben "functions.php" veya "library.inc.php" veya pek çok benzerlerinin birine rastlamak kaç kez saymak olamaz.

Bu kötü bir fikir. Bunu yapmayın. Eğer yourselfs böyle yazma dosyaları bulursanız, bunu durdurun. ŞİMDİ.

Bu işlevsel programlama vs OOP meselesi değil. Bu kod düzenleme meselesi. Group fonksiyonları ve değişkenleri düzgün ve cepten doğal hissedeceksiniz. Lütfen fonksiyonları birçok şeyler yapmak ve gruplandırılmak kolayca kendilerini borç yoksa, sadece bir seferde bir şey yapmak bu yüzden onları refactor deneyin. Bu da mevcut fonksiyonların dışında redudancy bir sürü şerit sağlar göreceksiniz.

Daha da kodunuzu saklanması için OOP kullanabilirsiniz: nesneler içine değişkenleri koymak ve bu değişkenlerin bu nesnelerin özelliği yöntemler olarak giriş veya çıkış olarak bu nesnelerle etkileşim de çalışabilir işlevlere sahiptir. "Küresel" önlemek ve rutin fonksiyon argümanları değişiklik yok.

Kişisel sorunlar sahip düşünüyorum sorunlar değildir.

EDIT: Örneğin gelince: dizeleri PHP nesneleri olmadığından, gerçekten mantıklı bir sınıfta bu işlevi koyamazsınız, bu nedenle muhtemelen diğer string fonksiyonları ile bir programı modül içine koyup olarak kullanmak isterdim Zaten yapmak. Yine de, functions.php bölüyor ve atom modülleri bir koleksiyon haline dönüm kodun okunabilirliği için mucizeler yok. Onun içeriği ile tanıdık, ama başka bir kodlayıcı (ve "Eğer kodu kullanarak değil, üç ay sonra" başka kodlayıcı IS), çünkü okunabilir çeşitli fonksiyonları içeren bir dosyayı bulabilirsiniz olmaz.

EDIT2: "cepten" sihirli şeyi daha iyi yapmak olmadığını anlayın. Size daha iyi kod yazmaya yardımcı gerekiyordu bir araçtır. Her yerde OOP kullanıyorsanız, muhtemelen bunu yapıyoruz yanlış (ya da Java için yazı *cough*). İlk yapılandırılmış kod gibi şeyler anlamadan OOP kullanırsanız, ya, bunun dışında bir şey almazsınız.

Bir PHP sınıfı örneği olabilir ve tüm kombine özellikleri ve yöntemleri bulunuyor kullanın. Siz komut dosyası yürütme sırasında bir nesneyi işleyebilirsiniz ve devlet kaydedilir.

class Myclass{
  public $a, $b, $c;

  public setA(){
    $this->a = b;
  }
  public getA(){
    return $this->a;
  }
}

Bu bir fonksiyon ile yapamaz budur:

$x = new Myclass;
$x->setA();
print $this->getA();

Bir fonksiyonları PHP ile aynı işlevselliği taklit edemez. Size fonksiyonları bir kez çalıştırmak ve hiçbir örneği yoktur, çünkü başka bir yerde bu değişkenleri tutmak zorunda. Eğer büyük bir başvurusu yazarsanız, bu functions.php kocaman bir kara delik olacaktır. Bu işlevsellik amaçlı özellikleri ve yöntemleri var ile Ayrılmış sınıfları kullanırsanız, siz istediğiniz kadar PHP uygulama uzatabilirsiniz. Eğer OOP kullanmak istemiyorsanız, kurulum bir çerçeve asla yapamam. Eğer büyük bir şey yazmak zorunda ama ne zaman, OOP önemini anlayacaksınız.

Bu olmaz. Bu iyi ya da kötü bir meselesi değil. O önemli paradigm bulunuyor.

Bütün bilgisayar programları bir sorunu çözmek hedefliyoruz. Sen Imperative Programming kullanabilir veya bu sorunu çözmek için (diğerleri) OOP kullanabilirsiniz. OOP sadece yapısı nasıl değiştirebilir ve uygulama organize, o encapsulation, polymorphism gibi kavramları kapsar çünkü, ve inheritance (bazı isim) olacaktır. Bu zorunluluk programlama genellikle mevcut değil, ama bu zorunluluk daha kötü olduğu anlamına gelmez. Bu sadece farklı.

PHP kodlama yapıyorsanız, ya da kullanabilirsiniz. PHP kesinlikle nesne yönelimli bir dil değildir. Ancak, PHP5 gibi, OOP üzerinde artan bir odak yok. API yeni eklemeler hemen hemen her zaman geç Sınıflar (SPL, DateTime, Uluslararasılaşma) vardır. Eğer bu kullanmak istiyorsanız, kesinlikle OOP içine bakmak gerekir.