مفاهیم Entity, Bundle و Field در دروپال
اگر با دروپال کار کرده باشید به احتمال زیاد واژههای Entity, Bubdle و Field به گوشتان خورده است. bundleها زیرمجموعه entityها هستند، ما میتوانیم یک entity ایجاد کنیم و سپس از روی آن یک bundle بسازیم و فیلدهایی را به آن اضافه کنیم. bundle در دروپال به عنوان Content type نیز شناخته میشود.
ممکن است هر entity دارای چندین bundle باشد، اما الزامی نیست و ممکن است یک entity هیچ باندلی نداشته باشد، برای مثال user entity هیچ گونه bundle وابستهای ندارد. در مقابل آن، node که یک entity پیش فرض دروپال هست، شامل دو باندل Basic page و Article است. ما میتوانیم فیلدهایی را به یک باندل اضافه کنیم. مثلا در صفحه ثبت نام کاربر فیلدی برای فایل رزومه کاربر ایجاد کنیم. فیلدها دارای اعتبار سنجی، نوع داده و ویجتهایی برای نمایش هستند، با توضیح این مقدمات در ادامه به بررسی دقیق تر مفهوم entity میپردازیم.
توسعه دهندگان ماژولها در دروپال ۶ اغلب از nodeها به عنوان یک ابزار برای ایجاد ابجکتها استفاده میکردند و آنها را در دیتابیس ذخیره میکردند. در دروپال ۷ ما entityها را داریم. entityها علاوه بر داشتن همه قابلیتهای node در دروپال ۶، قابلیتهای ویژه دیگری نیز دارند. ماژولهای هسته دروپال مانند node.module و user.module از entityها برای کار با رکوردهای دیتابیس خودشان و انجام عملیات CURD استفاده میکنند.
آنها را می توان به عنوان کلاس والد nodeها در نظر گرفت. entityها در واقع مفاهیم انتزاعی برای انجام عملیاتها در nodeها، واژههای رده بندی و کاربران و … هستند. برای مثال این مفهوم را با نگاه کردن به توابع ()user_load_multiple() , node_load_multiple در دروپال ۷ می توانید مشاهده نمایید
function user_load_multiple( $uids = array(), $conditions = array(), $reset = FALSE) { return entity_load('user', $uids, $conditions, $reset); } function node_load_multiple( $nids = array(), $conditions = array(), $reset = FALSE) { return entity_load('node', $nids, $conditions, $reset); }
همینطور که میبینید روش لود کردن nodeها و کاربران تقریبا مشابه یکدیگر هستند و باعث میشود حجم عظیمی از کدهای هسته دروپال قابلیت نگهداری بیشتری داشته باشند و خیلی تمیزتر و واضحتر باشند.
entity API مجموعه توابعی تعریف میکند که به وسیله آنها میتوانیم اطلاعاتی مانند برچسب و uri را بگیریم که در دروپال ۶ این عمل نیازمند انجام کار بیشتری است. یکی از بزرگترین مزیتهای entity امکان تعریف entityهای دلخواه است. entityها از revision tracking پشتیبانی میکنند، که به شما این امکان را میدهد چند ورژن از یک entity را داشته باشید که در دیتابیس ذخیره شدهاند. برای مثال اگر شما یک entity با نام “Wiki page” ایجاد کرده باشید میتوانید تغییرات را دنبال نمایید و تفاوتهای بین بازبینیهای مختلف را ببینید.