-
Notifications
You must be signed in to change notification settings - Fork 0
Controller
مهمترین ابزاری که در توسعه سیستم معرفی شده، لایه کنترولها است.
کنترل در حقیقت یک ساختار دادهای است که بر اساس تقاضای کاربر تعیین میکند که چه تابعی باید فراخوانی شود.
در این سکو شما میتوانید آزادانه URL مورد نظر خود را برای هر نمایش ایجاد کنید. برای نمونه دستهای از آدرسهایی قابل تعریف در این سکو آورده شده است
/ - The simplest :-)
/article/
/somewhere/pluf-is-great - Does not end with a trailing slash!
/what/about/a/pdf-file.pdf - You can have extensions.
/img/dynamic/image.png
etc.
به بیان دقیقتر، از آنجا که ادرسها با استفاده از عبارتهای منظم تعریف میشود شما قادر خواهید بود که هر طور که میخواهید ساختار آدرس را برای لایه نمایش تعریف کنید.
تمام آدرسها به صورت یک آرایه در یک پرونده تعریف شده و به عنوان نتیجه برگردانده میشود. تمام آدرسهای سیستم به صورت معمولد در یک پرونده با آدرس زیر تعریف میشود:
YourApp/conf/urls.php
هر مسیر به استفاده از یک ساختار دادهای آرایه معرفی میشود که در آن خصوصیتهای متفاوتی در نظر گرفته شده. تمام مسیرها نیز در یک آرایه قرار میگیرد تا تمام دستیابیهای سیستم را معرفی کنند.
ساختار کلی تعریف مسیرهای یک سیستم به صورت زیر است:
<?php
return array(
array(
// URL#1 parameters
),
array(
// URL#2 parameters
),
...
array(
// URL#n parameters
),
);
فرآیند مسیر یابی تمام این ارايه را از اول بررسی میکند و اولین مسیری که با فراخوانی کاربر منطبق شود را انتخاب و اجرا میکند.
بر اساس کاربرهایی که یک مسیر دارد خصوصیتهای متفاوتی برای آن در نظر گرفته شده است. در این بخش این خصوصیتها را تشریح میکنیم.
این عبارت منظم روی آدرس منبع ورودی با استفاده از تابع preg_match اجرا میشود و در صورتی که آدرس منبع منطبق با عبارت منظم بود آنگاه نمایش معادل با آن فراخوانی میشود.
در بسیاری از موارد شما نیاز به نصب نرمافزار در زیر پوشههایی از سایت دارد در این حال با استفاده از این متغیر میتوانید آدرس دهی همه نمایشها با به یک آدرس دلخواه انتقال دهید. میتوان گفت این متغیر به عنوان پیشوندی برای آدرسهای سایت در نظر گرفته میشود که در انطباق عبارت منظم استفاده نمیشود.
فرآید اجرای هر کنترل باید با استفاده از یک متد ایستا در یک کلاس پیاده سازی شده باشد تا سیستم بتواند آن را در ازای فراخوانی کاربر اجرا کند.
این دو خصوصیت به ترتیب کلاس و متد معادل با یک کنترل را تعیین میکنند.
هر کنترل در سیستم با استفاده از یک شناسه یکتا معرفی میشود که در حالت کلی به صورت زیر تعیین میشود:
ControllerClassName::ControllerMethodName
ممکن است که یک کنترلر خاص در سیستم ارجاع داده شود. در این حالت استفاده از این روش توسعه سیستم را با مشکل روبرو میکند.
خصوصیت نام شناسه یکتایی را برای کنترل تعیین میکند و استفاده از کنترل را مستقل از کلاسی که آن را پیاده سازی کرده است میکند.
در بسیاری از موارد استفاده از یک نام یکتا برای لایه نمایش بسیار بهینه است جایی که ممکن است مسیر نمایش و یا کلاس و متد آن تغییر کند. با استفاده از این خصوصیت دیگر نیاز نیست که در کل سیستم فراخوانی لایه نمایش را تغییر دهید. به بیان ساده نام یک ارجاع مجازی به یک نمایش ایجاد میکند که البته باید به صورت یکتا در کل سیستم تعریف شده باشد.
زمانی که از برنامههایی دیگر به عنوان زیر برنامههایی در سیستم خود استفاده میکنید این متغییر به کار گرفته میشود. در ادامه استفاده از این متغیر به صورت کامل تشریح شده است.
پارامترهایی را تعیین میکند که باید به لایه نمایش ارسال شود. برای نمونه گاهی لازم است که آدرس تغییر مسیر لایه نمایش به صورت پارامتر برای متد ارسال شود.
این پارامتر تعیین میکند که کنترل در مقابل کدام متد http باید فعال شود. مقدار این پارامتر میتواند یک متد یا آرایهای از متدها باشد. این پارامتر اختیاری است و در صورتی که تعیین نشده باشد معادل با در نظر گرفتن تمام متدها برای کنترل است.
نکته مهمی که باید همواره به آن توجه داشته باشید این است که عبارت منظم ایجاد شده باید بین دو علامت # قرار بگیرد.
نکته دیگری که باید به آن توجه داشته باشید این است که ترتیب در نظر گرفتن نمایشها ترتیب قرار گرفتن آنها در فهرست نمایشها است.
پیش شرطهای فراخوانی کنترل را تعیین میکند.
در بخش امنیت این موضوع بیشتر تشریح شده است.
گاهی نیاز است که در پیاده سازیها مسیر معادل با یک کنترل تعیین شود.
$url = Pluf_HTTP_URL_urlForView('url name', array('param#1', .. 'param#n'));
مسیر فراخوانی یک کنترل برای کاربران به صورت زیر:
[controller base]/[controller regex]
که در آن خصوصیت regex با پارامترهای مسیر جایگزین شده باشد.