واجهة API للإضافات ونظام الخطافات
حدّد جدول API للإضافة وسجّل خطافات لأحداث دورة الحياة
واجهة API للإضافات ونظام الخطافات درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
ما هو نظام الخطافات؟
يسمح نظام الخطافات للإضافات بتسجيل دوال استدعاء لأحداث محددة في دورة حياة التطبيق. يستدعي التطبيق جميع الخطافات المسجّلة في الوقت المناسب.
كائن التطبيق
يمرّر التطبيق كائن التطبيق إلى الإضافات أثناء التهيئة. ويكشف هذا الكائن واجهة برمجة التطبيقات الخاصة بتسجيل الخطافات.
local App = {}
App.__index = App
App._hooks = {}
function App:on(event, fn)
self._hooks[event] = self._hooks[event] or {}
table.insert(self._hooks[event], fn)
end
function App:emit(event, ...)
for _, fn in ipairs(self._hooks[event] or {}) do
fn(...)
end
endتسجيل الإضافة للخطافات
تتلقى دالة init الخاصة بالإضافة التطبيق، ثم تسجّل الخطافات.
-- plugins/auth.lua
return {
name = "auth",
init = function(app)
app:on("request", function(req)
if not req.headers.token then
error("Unauthorized")
end
end)
end
}أولويات الخطافات
اسمح للإضافات بتحديد أولوية حتى تعمل الخطافات المهمة، مثل المصادقة، قبل الخطافات الاختيارية، مثل التسجيل.
function App:on(event, fn, priority)
priority = priority or 50
local hooks = self._hooks[event] or {}
hooks[#hooks+1] = {fn=fn, priority=priority}
table.sort(hooks, function(a,b) return a.priority < b.priority end)
self._hooks[event] = hooks
endالقيم المُعادة من الخطافات
تعيد بعض الخطافات قيمًا تعدّل السلوك. ويمكن للتطبيق إيقاف التنفيذ عند أول قيمة مُعادة غير فارغة.
function App:filter(event, data)
for _, fn in ipairs(self._hooks[event] or {}) do
local result = fn(data)
if result ~= nil then return result end
end
return data
endإلغاء تسجيل الخطافات
وفّر أسلوبًا هو :off(event, fn) لإزالة خطاف محدد باستخدام مرجع الدالة.
تنظيم أسماء الخطافات ضمن مساحات أسماء
استخدم أسماء أحداث مفصولة بنقاط للتنظيم: "request.before"، "request.after"، "db.query".
الأوامر التي توفرها الإضافات
إلى جانب الخطافات، يمكن للإضافات تسجيل أوامر مسماة يستطيع التطبيق أو الإضافات الأخرى استدعاءها.
function App:registerCommand(name, fn)
self._commands = self._commands or {}
self._commands[name] = fn
end
function App:run(name, ...)
local cmd = self._commands[name]
if cmd then return cmd(...) end
error("Unknown command: " .. name)
endنمط البرمجيات الوسيطة
يمكن لسلاسل الخطافات أن تشكّل حزمة من البرمجيات الوسيطة، بحيث يستدعي كل خطاف الخطاف التالي، مما يتيح مسارات لمعالجة الطلبات والاستجابات وتحويلها.
اختبار الإضافات بمعزل
أنشئ كائن تطبيق وهميًا في الاختبارات للتحقق من تسجيل خطافات الإضافة واستدعائها بشكل صحيح.
اصطلاح التوثيق
وثّق جميع أسماء الخطافات المتاحة ومعاملاتها والقيم المُعادة المتوقعة. ويشكّل ذلك عقد الإضافة الذي يعتمد عليه مطورو الجهات الخارجية.
سؤال حول نظام الخطافات
ما الغرض من الأولوية في نظام الخطافات؟
مراجعة: واجهة برمجة الإضافات ونظام الخطافات
كشّف واجهة برمجة التطبيقات :on(event, fn) لتسجيل الخطافات على كائن التطبيق. أطلق الأحداث باستخدام :emit(). أضف الأولوية لتنفيذ الخطافات بترتيب محدد. استخدم أسماء أحداث ضمن مساحات أسماء، ووثّق عقد الخطاف لمطوري الإضافات.
الأسئلة الشائعة
هل درس «واجهة API للإضافات ونظام الخطافات» مجاني؟
نعم — نص درس «واجهة API للإضافات ونظام الخطافات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «واجهة API للإضافات ونظام الخطافات»؟
حدّد جدول API للإضافة وسجّل خطافات لأحداث دورة الحياة تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «واجهة API للإضافات ونظام الخطافات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- اكتشاف الإضافات وتحميلها
- واجهة API للإضافات ونظام الخطافات
- وضع تنفيذ الإضافات في بيئة معزولة
- إدارة الإصدارات والتبعيات