2012-08-01 12 views
6

Online modülleri öğreniyorum ve js'deki modüller gibi görünüyor ve php'deki sınıflar çok benzer. Her iki grup da kodlamayı daha kolay anlamak için birlikte çalışır. İşlevler her ikisinde de beyan edilebilir ve kamuya açık veya özel olarak yapılabilir. Kullanımda nasıl benzerler ve nasıl farklılar?js'deki Modüller ve php'deki Sınıflar arasındaki fark nedir?

+1

Doğrudan bir yanıt değil, sınıflar yalnızca işlevlerin anlaşılmasını kolaylaştırmak için değil. Ana amaçları, soyutlama (uygulama detaylarını gizleme), kapsülleme (sadece her nesne için belirli eylemlere izin verme) ve modülerlik (her bir sınıfı kolayca taşınabilir hale getirir). – Palladium

cevap

2

Javascript'in modülleri, kapsülleme, özel durum ve hatta diğer modüllerdeki kalıtım gibi bazı güzel özellikler sağlar. PHP'de olduğu gibi, sınıfların bazı özelliklerini sağladıklarında değillerdir. Sınıfları taklit etmek için mevcut Javascript functonality üzerine inşa etmeye çalışırlar, bu yüzden neden karışıklık. yani sınıfları gibi görünmek ve hissetmek için yapılıdırlar.

Javascript'in modülleri, bir değişkene atanan anonim işlevlerin örnekleridir. Bu nedenle, kodlarının aşağıdan yukarıya doğru yürütüldüğü bir fonksiyonun tüm özelliklerine sahiptirler, bazen geri bildirim (PHP sınıflarında hiçbir açıklama doğrudan alan tanımı ve atamasından ayrı olarak çalıştırılabilir) kullanırlar ve hatta global değişkenlere erişim. PHP'de ise, bir sınıf veya daha doğrusu yöntemleri, sınıfta olmayan bir değişkene erişemez. Global değişkenlere erişmek için, bir sınıf metodu veya statik fonksiyonun, onu alması için global $a değişkenini açıkça çağırması gerekir. Js modüllerinde, tüm global varslar erişilebilir durumdadır, ancak bazen bir tanesi açık bir şekilde onları daha net bir şekilde (function(a){})(imported); için içe aktarmaktadır. Js modülleri, alanlar için özel durumlar sağlarken, PHP'nin sınıfları, tıpkı C++, java, python vb. Gibi özelliklere daha fazla güvenlik sağlar. Sınıf yöntemleri ve özniteliklerin yalnızca tanımlandığı veya yapılandırıldığı ancak kullanılmadığı abstract class ve interface anahtar sözcüklerini kullanarak temel sınıflara izin verir.

PHP sınıfları, sınıf nesnesi başlatıldığında ve son sözde nesneyi yok etmek için kullanıldığında çağrılan kurucular ve yıkıcılar içerir. Verilmişse, istediğiniz zaman çalıştırabileceğiniz modüllerde fonksiyonlar yaratabilirsiniz, diğer yandan PHP'de, metoddaki fonksiyonlar sadece nesne, sınıf veya diğer işlevler tarafından çağrıldığında çalıştırılır.

Sınıflarda, statik işlevler vardır, bunlar sınıfın bir nesnesine bile sahip olmadan çağrılabilir ve nesnelerden bağımsız olarak çalıştırılabilir, diğer yandan js'de, her şey bir nesnedir; Statik fonksiyonların noktasını yener.

Şunlara benzerler: her ikisi de var olan bir modülü yenisiyle genişletebileceğiniz mirasa sahiptir ve PHP'de bir ana sınıftan devralmak için extends kullanabilirsiniz. Her ikisinin de harici erişimi engelleyen özel veri durumları vardır, bunlar hem veri hem de yöntemleri gruplandırır ve paketler ve her ikisi de uygun şekilde kullanıldığında harikadır.

İlgili konular