Sınıfları kullanarak modül oluşturmak için en iyi uygulama


19

Tembel / otomatik yükün Drupal 7'de olduğu için modüllerimi sınıf olarak oluşturmaya başlamak istiyorum ve harika bir iş yapan bazı modüllere (katkıda bulunan veya çekirdek) bakmak isterim.

Bir sınıfı kanca olarak entegre etmenin yaratıcı bir yolu var mı? Her özelliği ctools eklentisi olarak uygulayabilir miyim?

Yoldan geçenler, D7'nin otomatik / tembel yükleme sınıfları / arabirimleri için files[]modül .infodosyalarında yeni bildirimler içerdiğini belirtmelidir : .info dosyaları yazma (Drupal 7.x) .

Aşağıdakiler, motivasyonları ve anayasayı (olduğu gibi) Drupal topluluğu Drupal programlamasından nesne yönelimli bir perspektiften almak için iyi bir okuma .

Yanıtlar:


16

Bir modül Crell tarafından bir sınıf değildir , ilk önce okumanız gereken şey budur.

Drupal 7'deki en büyük OOP kısmı yeni veritabanı soyutlama katmanıdır (aynı Crell ve diğerleri tarafından tasarlandı). Bu, yeniden kullanılabilen ve kullanılması gereken birçok deseni uygular.

Örneğin:

Olan şey hala controversaly tartışılan olan Bilgi saklama . DBTNG, sınıf özelliklerini korumalı yaparak ve doğrudan erişime izin vermeyerek bunu uygular. Öte yandan, hook_query_alter () var ve referans alıcı yöntemleri ile çeşitli ile neredeyse serbestçe değiştirilebilir .


büyük cevap, modül kodumu yapılandırırken düşüncemi güncellemek için tonlarca büyük kaynak!
Electblake

3

Bu ilginç bir soru.

Sınıf olarak Drupal modülü fikri çok ilginç. Bununla birlikte, D7 modüllerinde bile, adıyla kontrol edilen kanca işlevlerini uygular, bu nedenle modülünüz için bir sınıf oluştursanız bile, onları çağırmak için kanca işlevlerini uygulamanız gerekir.

Bununla birlikte, birçok modül sınıfları dahili olarak kullanır ve bu sınıflar aracılığıyla işlevselliği ortaya koyar. Bunun en açık örneği manzaralardır. Bu yüzden bakmak için iyi bir yer olabilir. Ancak, birçok modülün sınıfları kendi yöntemleriyle kullandığını unutmayın, bu nedenle görünümlere bakarak öğrendikleriniz her zaman geçerli olmayabilir.


Anlayışınız için teşekkür ederim ve Drupal'a düzgün şekilde kaydolmak için hala hook_functions'a ihtiyacım olduğunu varsaydım ama modüllerin nasıl uygulandığını merak ediyorum. Views modülüne bir göz atacağım (ve umarım kaybolmayacaksınız) - daha fazla izole vaka / bulduğunuz desen örnekleri bulursanız lütfen cevabınızı güncelleyin: D
electblake

2

Varlık API'sı (katkı modülü), varlık türlerinizin her biri için bir "varlık sınıfı" bildirmenize olanak tanır; böylece varlığınızla ilgili tüm kodlar (oluşturma, yükleme, kaydetme, erişim vb.) Bir sınıfa girebilir (Organik Gruplar bunu yapar).

Dedi ki, aşırıya kaçmayın. ctools eklentileri ihtiyacınız olduğunda iyi bir şeydir (sonraki Görünümleri, Panelleri veya Kuralları yazıyorsunuz), ancak sınıfları her yerde sadece ideolojik saflık için kullanmak size çok iyi gelmeyecek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.