با اینکه من از نوشتن این چیزها توی وبلاگ شخصی متنفر هستم ولی خب باید یکجا در موردش بنویسم که بعدا بتونم بهش رجوع کنم شاید بدرد شما هم بخوره
سیستمش خیلی ساده ولی قوی هست. شما کلا با دوچیز سروکار دارید :
- منابع - Resources
مثلا فرض کنید منابع توی یک سایت دسترسی به فرستادن مقاله باشه !
خب این دسترسی ها مثلا می تونه ایجاد(create), خواندن(read), ویرایش(edit), حذف(delete و ... باشه این کلاس شما رو محدود نمی کنه !
- قوانین - Roles
توی یک سایت مثلا می تونیم یک سری قوانین برای مهمان, کاربر عضو شده و یا مدیر در نظر بگیریم.
یک مثال می زنم امیداورم که متوجه بشید !
فرض کنید یک خانواده داریم که ۴ نفر هستند ! پدر مادر دختر بچه و یک نی نی کوچولو که متاسفانه جنسیتش رو یادم رفت مشخص کنم !
خب اینها می خواند برند پیک نیک ولی این پدر مادر متهعد می ترسند که وقتی سوار ماشین(این همون Resource هست ها !) هستند یک وقت بچه ها کاری بکنند که واسشون خطرناک باشه از همه مهمتر پدره می ترسه که خانومش بشین پشت فرمون !
خلاصه از ما درخواست می کنند که یک برنامه بنویسیم که واسشون سطح دسترسی رو مشخص کنه !
ما هم این قوانین رو می گذاریم :
نی نی فقط می تونه صندلی عقب بشینه
دختر هم می تونه کار های نی نی رو انجام بده هم در ها رو باز بسته کنه
مادره هم می تونه کارهای دو نفر قبلی رو انجام بده و می تونه بشینه کنار راننده !
پدر هم همه کاری می تونه بکنه
خب این کدی هست که واسشون نوشتم البته قبل از اینکه پولش رو بدند فرار کردند ولی به هر حال تمرین خوب بود برای کار با Zend_Acl :
//begin
<?
require_once 'Zend/Acl.php';
$acl = new Zend_Acl();
require_once 'Zend/Acl/Role.php';
//Create baby role
$role_baby=new Zend_Acl_Role('baby');
//Add to roles
$acl->addRole($role_baby);
$acl->addRole(new Zend_Acl_Role('girl'),$role_baby);
$acl->addRole(new Zend_Acl_Role('mamy'),'girl');
//Dady is powerfull !
$acl->addRole(new Zend_Acl_Role('dady'));
require_once 'Zend/Acl/Resource.php';
//add car as a resource
$acl->add(new Zend_Acl_Resource('car'));
//set ACL
$acl->allow('baby','car',array('sit_down_back'));
$acl->allow('girl','car',array('open_door','close_door'));
$acl->allow('mamy','car',array('sit_down_beside_driver'));
//dady can do everything he wants !
$acl->allow('dady','car');
echo 'babay <b>';
echo $acl->isAllowed('baby', 'car', 'sit_down_back') ? "can" : "can't";
echo '</b> sit down back<br />';
echo 'babay <b>';
echo $acl->isAllowed('baby', 'car', 'open_door') ? "can" : "can't";
echo '</b> open door<br />';
echo 'girl <b>';
echo $acl->isAllowed('girl','car','sit_down_beside_driver') ? "can" : "can't";
echo '</b> sit down beside driver<br />';
echo 'mamy <b>';
echo $acl->isAllowed('mamy','car','driver') ? "can" : "can't";
echo '</b> drive a car<br />';
echo 'dady <b>';
echo $acl->isAllowed('dady','car','drive') ? "can" : "can't";
echo '</b> drive a car <br />';
echo 'dady <b>';
echo $acl->isAllowed('dady','car','go_to_wall') ? "can" : "can't";
echo '</b> go to wall with car <br />';
echo '<br /><br />Ye man! dady can do anything :P ';
?>
//end
خروجی :
babay can sit down back
babay can't open door
girl can't sit down beside driver
mamy can't drive a car
dady can drive a car
dady can go to wall with car
Ye man! dady can do anything :P
اگر احساس می کنید که به راهنما های بیشتر نیاز دارید به بهتر به راهنمای Zend Framework مراجعه کنید
البته من انسانی یه شدت فمنیست هستم ! پس این شوخی رو به دل نگیریدبرچسبها: php, Zend Framework
خیلی وقته که دنبال یک فریم ورک می گردم که کارم رو راحت کنه اما متاسفانه تا آلان هیج کدومشون این کار رو برای من نکردند.
همشون یک راهنمای گنده دارند و به من می گن که باید این رو بخونی ! ولی حسش نیست تازه اگر هم بخونی تا کسی که کار بلد باشه و راه و چاه ها رو بدونه باید کنارت باشه وگرنه تله توشون زیاده.
امروز با خودم گفتم که این Zend Framework رو هم یک تستی بکنم.
به هر حال Zend براش نقشه ها بزرگی کشیده.
توی خود سایتش این دلایل رو برای اینکه چرا Zend Framework رو استفاده کنیم اورده (بقاله نمی گه ماست من ترشه ! ) :
توسعه داده شده توسط روح php (یکی نیست بگه این دلیله آخه ! )
توسعه داده شده بر اساس سادگی و شی گرا لایسنس دوستانه (!)
توجه به امنیت و استفاده مجدد و برنامه ها web 2 و WebService ها
بعد دوباره خط بعد همین حرف ها رو تکرار کرده ولی بعضی نکاتش رو Bold کرده !
و اگر خودتون سایتش رو بخونید دوباره همین حرف ها رو زده با توضیحات بیشتر !
عجب ! فهمید چرا Zend Framework این قدر خوبه ! پس برید ازش استفاده کنید
راستی باز هم باید بگم که به هر حال Zend براش نقشه ها بزرگی کشیده پس ازش غفلت نکنید.برچسبها: php, Zend Framework