سؤال

نحن نبحث عن آلية تشمل البرامج النصية المزودة للحصول على مساحة لمخاوف شاملة.

في مثالي، لدينا ونقاط نهاية خدمة الويب كبرامج نصية رائعة وترغب في تسجيل الدخول إلى بروتوكول خدمة الويب الخاص بنا. لأننا نستخدم كائننا الضمني (الحصول على إطار عملنا) لإنشاء بيان التسجيل.

ولكن هذا هو رمز الغليان إذا كنا نبلغ هذا في كل نقطة نهاية خدمة الويب.

نحن نبحث عن شيء ما تشمل () في PHP، والذي يتضمن البرامج النصية المختلفة الأخرى، هل هناك أي أفكار كيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

منذ أن ذكرت بالفعل "المخاوف الشاملة" أقول أنك بحاجة إلى اعتراض مكالمات الويب الخاصة بك أوم نمط (وليس آلية تشمل).

يتم دمج القضبان تماما مع إطار الربيع, ، لذلك هذا يجعل للحصول على خيار جيد لاستغلال ميزات ربيع AOP. نلقي نظرة على هذا الفصل من الدليل الرسمي للنباتات:http://grails.org/doc/latest/guide/14.٪20grails٪20and٪20spring.html والبحث عن كلمة AOP.

ربما هناك طريقة إيجازية بحتة من القيام ب AOP، لكنني أذهب مع الشجاعة والربيع.

نصائح أخرى

يعامل Groovy ملفاته ككائنات (فكر في الأمر اعتبارا من التفاف التلقائي). وتجعل جميع الملفات .groovy داخل جافا classpath المتاحة كصفات. لذلك إذا كان لديك ملف Util.groovy، يحتوي على شيء مثل هذا في الداخل:

def static AuxMethod() {
    return "Hello World"
}

للاتصال به من ملف آخر تكتب

println util.AuxMethod()

هذا هو. مرة أخرى، فقط تأكد من أن ملف Util.groovy الخاص بك في ClassPath.

لاستدعاء السيناريو u.groovy من البرنامج النصي الحالي، تمر على طول الحجج الأصلية إلى U.Groovy، تشغيل

run(new File('u.groovy'), args)

من الواضح أنه يمكنك أيضا إرسال أي حجج سلسلة تريد:

run(new File('u.groovy'),
        ['one', new File('two.text').absolutePath] as String[])

إلقاء نظرة على وظيفة تقييم (الملف):

 Object evaluate(File file) 

http://groovy.codehaus.org/api/groovy/lang/script.html.

فعلت بعض الأبحاث حول هذا لأن لغة خاصة المجال كنت أوجج. هناك ثلاث إمكانيات:

  1. قم بإنشاء فصولك باعتبارها ميراث فئة الوالد المزخرفة. ضع الرمز المشترك في الفئة الأساسية.

  2. استخدام scriptbaseclass انظر http://groovy.codehaus.org/embedding+groovy. وبعد هذا فئة سيتم فيها إنشاء جميع النصوص الخاصة بك.

  3. استخدم قدرة أساليب استيراد ثابت. لاحظ أنه يمكنك القيام بذلك داخل حاوية Java (انظر http://mrhaki.blogspot.com/2011/06/groovy-goodness-add-imports.html. ).

كل هذه العمل عظيم. تفضيلي هو scriptbaseclass. هذا يعمل بشكل أفضل إذا كان الرمز المشترك رائع (ScriptBaseClass يجب كن فئة رائعة. لا يمكن أن يكون فئة جافا.)

بالطبع، مع كل هذه العناصر، ستظل تحتاج إلى استدعاء الأسلوب المشترك في الواقع في التعليمات البرمجية الخاصة بك. علي سبيل المثال:

doCommonStuff();
.
. do the rest of it here
.

هذا ليس فظيعة جدا، لا أعتقد. بالتأكيد حول نفس الشيء مثل إضافة نوع من عبارة #include قبل المعالج.

وأخيرا، يفترض كل هذا أن لديك إمكانية الوصول إلى برنامج Java الذي يدعو التعليمات البرمجية الخاصة بك. إذا لم يكن الأمر كذلك، فلا يزال بإمكانك استخدام الواردات الثابتة. انها مجرد خط واحد إضافي من التعليمات البرمجية.

import static com.mycompany.mycode.doCommonStuff
doCommonStuf()
.
. do the rest of it here
.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top