تكرار السؤال: …
الإجابة المختصرة
السمات هي بيانات وصفية مهيكلة ومدمجة في لغة PHP رسمياً، ويتم فحص صحتها وقت الترجمة والوصول إليها عبر Reflection دون الحاجة لتحليل نصوص التعليقات.
الشرح
تاريخياً، كانت أطر العمل مثل Symfony وDoctrine تعتمد على مكتبات خارجية لتحليل نصوص التعليقات /** @Route('/api') */ عبر الـ DocBlocks Parsing. وفرت PHP 8 بنية أصيلة #[Route('/api')] يفسرها المحرك كتعليمات نظامية تدعم الأنواع الصارمة، وإكمال الكود التلقائي في الـ IDE، وتوليد كائنات حقيقية عند استدعاء getAttributes().
مثال بالكود
#[Attribute(Attribute::TARGET_METHOD)]
class Route {
public function __construct(public string $path) {}
}
class ApiController {
#[Route("/users")]
public function list() {}
}أخطاء شائعة
- افتراض أن السمات تنفذ كوداً تلقائياً بمجرد كتابتها؛ هي مجرد مصفوفة بيانات وصفية تتطلب كوداً خارجياً لفحصها وتطبيق أثرها.