در این جلسه با مثالی ساده نمایی از بخش Views را به شما نمایش می دهیم.
برای شروع در پوشه Views فایل جدیدی به نام register.php ایجاد می کنیم.
مثال:
1 |
Views\register.php |
در این فایل دستورات ابتدایی زبان html را ایجاد می کنیم.این فایل وجهه بصری دارد و قصد نداریم دستورات PHP خود را درون آن وارد کنیم.
مثال:
1 2 3 4 5 6 7 8 9 10 |
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register PHP</title> </head> <body> </body> </html> |
توجه: دستورات و کدهای php خود را در پوشه Controllers و Models وارد کنید.در واقع کار پردازش درخواست ها توسط Controllers به Models ارسال می شود .
در این فایل form خود را ایجاد می کنیم و مسیر ارسال داده های فرم را به داخل پوشه Controllers و فایل register.php ارسال میکنیم.
نوع متد ارسال فرم را post قرار می دهیم.درون پوشه Controllers فایل جدیدی به نام register.php ایجاد می کنیم.وظیفه این فایل مدیریت درخواست های ارسالی از طرف Views است.
پس از ارسال درخواست به پوشه Models نتیجه آن از طریق Controllers به فرم Views ارسال می شود.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register PHP</title> </head> <body> <form action="../Controllers/register.php" method="post"> </form> </body> </html> |
حال اطلاعات فرم خود را براساس نام، نام خانوادگی، نام کاربری، رمز عبور و ایمیل تکمیل می کنیم.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register PHP</title> </head> <body> <form action="../Controllers/register.php" method="post"> <p> <label>Name:</label> <input type="text" name="Fname"> </p> <p> <label>family:</label> <input type="text" name="Lname"> </p> <p> <label>email</label> <input type="email" name="Email"> </p> <p> <label>user name:</label> <input type="text" name="Username"> </p> <p> <label>family</label> <input type="password" name="Password"> </p> <input type="submit" name="send" value="register"> </form> </body> </html> |
حال به آدرس http://localhost/phpmyadmin رفته و یک پایگاه داده به نام dejavani_db طبق آموزش های قبلی ایجاد کنید برای مشاهده به قسمت های قبل مراجعه شود.
در پایگاه داده جدولی به نام tbl_users ایجاد نمائید در بخش هدر قسمتی به نام Sql وجود دارد دستور زیر را درون آن وارد کنید تا فیلدهای جدول شما ساخته شود.
کوئری ساخت جدول tbl_users:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; CREATE TABLE `tbl_users` ( `UserID` int(11) NOT NULL, `Fname` varchar(255) COLLATE utf8_persian_ci NOT NULL, `Lname` varchar(255) COLLATE utf8_persian_ci NOT NULL, `Email` varchar(255) COLLATE utf8_persian_ci NOT NULL, `Username` varchar(255) COLLATE utf8_persian_ci NOT NULL, `Password` varchar(255) COLLATE utf8_persian_ci NOT NULL, `Status` int(11) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci; ALTER TABLE `tbl_users` ADD PRIMARY KEY (`UserID`); ALTER TABLE `tbl_users` MODIFY `UserID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;COMMIT; |
در اینجا مقدار پیش فرض status را برابر با ۰ قرار میدهیم تا زمانی که هر کاربر جدید اضافه شد وضعیت آن بصورت غیرفعال باشد. این فیلد یک مقدار ۰ یا ۱ دریافت میکند که ۰ قرار است غیر فعال و ۱ برابر با فعال باشد.
داده های فرم خود را با متد post ارسال میکنیم. علت این کار این است که اطلاعات فرم در آدرس بار مرورگر نمایش داده نشود.
درباره پوشه controllers
در این پوشه فایل جدیدی به نام register.php ایجاد می کنیم.اطلاعات فرم به این فایل ارسال می شود و این فایل تصمیم می گیرد داده دریافتی را چطور آنالیز کند.
این فایل یک فایل کلاسی است و ما با روش شی گرایی آن را کدنویسی می کنیم.قرار نیست به روش تابعی و رویه ای آن را توسعه دهیم.
شروع کدنویسی درون کلاس register.php مربوط به controllers
اطلاعات فرم پس از ثبت به فایل register ارسال می شود.
اطلاعات فرم ارسالی را از طریق متغیر سراسری POST_$ قابل دریافت است در صورت vardump گرفتن می توانیم اطلاعات ورودی را دریافت کنیم.فرم را بصورت خالی ارسال می کنیم.
مسیر فایل:
1 |
htdocs\mvc\Controllers\register.php |
کد:
1 2 3 4 5 6 |
<?php var_dump($_POST); class Register { } |
خروجی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
array(6) { ["Fname"]=> string(0) "" ["Lname"]=> string(0) "" ["Email"]=> string(0) "" ["Username"]=> string(8) "" ["Password"]=> string(16) "" ["send"]=> string(8) "register" } |
حال یک خصوصیت بصورت private به نام data ایجاد می کنیم که مقدار ابتدایی آن را برابر با null قرار می دهیم.
کد:
1 2 3 4 5 |
<?php class Register { private $data = null; } |
حال درون کلاس یک تابع سازنده قرار می دهیم این تابع اطلاعات فرم را که در قالب آرایه ارسال می کند دریافت می کند و مقدار خصوصیت data را برابر با مقدار آرایه ارسالی از فرم می کند.
کد:
1 2 3 4 5 6 7 8 9 |
<?php class Register { private $data = null; public function __construct($data){ $this->data = $data; } } ?> |
پس از تنظیم مقدار خود درون کلاس، تابع جدیدی ایجاد می کنیم که وظیفه مدیریت داده دریافتی را دارد و خود نیز می تواند سایر متدهای دیگر را جهت بررسی مقدار فراخوانی کنید.
در اینجا متدی به نام handleRequest ایجاد می کنیم و برای نمونه داده data را برگشت می دهد.این تابع قرار است بسته به داده دریافتی اقدامات دیگر را انجام دهد.
کد:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php class Register { private $data = null; public function __construct($data){ $this->data = $data; } public function handleRequest(){ return $this->data; } } ?> |
برای ارسال داده فرم یک شی از روی کلاس Register ایجاد کرده و مقدار POST_$ را درون کلاس ارسال می کنیم.
در آخر متد handleRequest را فراخوانی می کنیم.
کد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php class Register { private $data = null; public function __construct($data){ $this->data = $data; } public function handleRequest(){ return $this->data; } } $register = new Register($_POST); print_r($register->handleRequest()); ?> /* Array ( [Fname] => amir [Lname] => javanmir [Email] => amir.javanmir1993@gmail.com [Username] => admin [Password] => 123456 [send] => register ) */ |
نکته: باید توجه داشته باشید این یک مثال برای آماده سازی ذهنی شما از روند اجرای برنامه است و رفته رفته کدها پیشرفته و واقعی تر قرار می گیرند.