ما هو Weaver ORM؟
Weaver ORM هو نظام ربط كائنات-علائقي (Object-Relational Mapper) لـ PHP 8.4+ مخصص لتطبيقات Symfony، مبني على مبدأ واحد: كائنات النطاق (domain objects) يجب أن تكون خالية تماماً من أي معرفة بقاعدة البيانات. لا توجد تعليقات توضيحية (annotations) على صفوف الكيانات (entity classes)، ولا توليد للوكلاء (proxy generation)، ولا انعكاس في وقت التشغيل (runtime reflection) — فقط كائنات PHP عادية وصفوف مُعيِّن (mapper classes) صريحة تترجم بينها وبين SQL.
المشكلات التي يحلها Weaver
كائنات وكيل Doctrine
يُغلف Doctrine كل كيان مرتبط في صف وكيل (proxy class) يعترض الوصول إلى الخصائص لاستدعاء استعلام SQL عند أول لمسة. في دورات الطلب/الاستجابة التقليدية، يكون هذا غير ملحوظ، لكنه يُمكّن بصمت أنماط استعلامات N+1 ويُعقّد تصحيح الأخطاء (var_dump($post->getAuthor()) يطبع وكيلاً، وليس User).
في العمال PHP طويلة الأمد (RoadRunner وFrankenPHP وSwoole وSymfony Messenger)، يراكم EntityManager حالة قديمة بين الطلبات ويجب إعادة تعيينه يدوياً عند كل حد طلب — خطأ سهل الوقوع وصعب التشخيص.