PHP MySQL
PHP PDO এবং OOP দিয়ে CRUD পর্ব ২:PHP OOP FORM Builder
PHP OOP FORM Builder: বিভিন্ন software এবং Web Development Project এ অনেক সময় আমাদেরকে একই কাজ বারবার করতে হয়, আর সেই জন্য একজন Programmer কে একই code বারবার লিখতে হয়। আর একই কোড বারবার লিখার কারণে আমাদের Project Development এর সময় যেমন বেশি লাগে একই ভাবে খরচ ও অনেক বেশি লাগে। আমরা যদি বারবার করা লাগে এমন কাজ গুলো কোনো class এর method এ process করে রাখি, তাহলে আমরা খুব সহজে সেই class এর Object দিয়ে method গুলোকে call করতে পারি। এতে আমাদের Project Development এর সময় এবং খরচ কমিয়ে আনতে পারি। CRUD Operation এর Form এর কাজ গুলো সাধারণত বারবার ব্যবহার হয়, আর তাই form এর কাজ গুলো আমরা নতুন একটা formBuilder Class এর মধ্যে আলাদা আলাদা Method এ লিখে রাখব। যা দিয়ে আমরা Form এর মধ্যে বিভিন্ন input field তৈরী করতে পারব। চলুন কিভাবে form builder class এ বিভিন্ন input type এর method তৈরী করা হয় দেখে নেয়া যাক :
PHP Constructor এবং Destructor Method দিয়ে Form Start এবং Form End
HTML input field গুলো তৈরী করার আগে আমাদেরকে প্রথমে form start এবং শেষে form close করে নিতে হয়।আর এই দুটি কাজের মধ্যে form start টা আমরা class এর constructor Method দিয়ে করব। কারণ আমরা জানি constructor Method সবার আগে execute হয়, একই ভাবে form close টা destructor Method দিয়ে করব। কেন destructor Method টা সবার শেষে execute হয়। নিচের কোডটি দেখুন :
01 02 03 04 05 06 07 08 09 10 11 12 13 | <?php class formBuilder{ public function __construct( $action , $method = 'post' , $name = 'form' , $css_class = 'form-control' ){ echo '<form class="' . $css_class . '" action="' . $action . '" method="' . $method . '" id="' . $name . '">' . "\n" ; } public function __destruct(){ echo '</form>' . "\n" ; } } $form = new formBuilder( "process.php" ); ?> |
উপরের কোডটি run করার পর, এখন আমরা কোনো দৃশ্যমান ফলাফল দেখতে পাবনা, তবে ব্রাউজার এর source code এ form start এবং ending টা দেখতে পাবেন। চলুন browser এর source code এ ফলাফল টা দেখা যাক :
ব্যাখ্যা: পাঠক লক্ষ্য করুন , আমরা সাধারণ ভাবে যখন কোনো ফর্ম তৈরী করার সময় যেইভাবে form শুরু এবং শেষ করি, এখানেও আমরা constructor এবং destructor method এ যথাক্রমে form শুরু এবং শেষ করি। তবে form start করার জন্য যেসব তথ্য দরকার তা আমরা constructor method এর Parameter হিসেবে গ্রহণ করবো। যেমন আমরা এখানে action, method, form name এবং form এর জন্য css_class গ্রহণ করেছি।
https://blog.w3programmers.com/php-course/
Form এর Input Field গুলো তৈরী করার Method
আমরা আমাদের formBuilder class এর সুবিদার্থে ফর্ম এর input গুলোকে declaration এর ভিত্তিতে তিনভাগে ভাগ করবো। নিচে ভাগ গুলো দেওয়া হল:
১. <input \>
২. <textarea >….</textarea>
৩. <select>….</select>”
<input type=”…” \> তৈরী করার Method
এখন আমরা inputField নামে একটা method বানাবো, যার কাজ হচ্ছে <input> দিয়ে যত form input বানানো হয় তার সব গুলো তৈরী করবে। নিচের কোডটি দেখুন :
1 2 3 4 5 6 7 | <?php public function inputField( $label = "" , $type , $name , $value = '' , $input_css_class = 'form-control' ){ $form_input = $label . ':<input type="' . $type . '" class="' . $input_css_class . '" name="' . $name . '" id="' . $name . '" value="' . $value . '" />' ; echo $form_input ; } ?> |
ব্যাখ্যা: উপরের inputField Method এর মধ্যে যেকোনো ধরণের input field তৈরী করার জন্য যত রকমের input field যেমন : label,input type,name, value, এবং input field এর জন্য css class সব গুলোকে আমরা parameter হিসেবে গ্রহণ করার সুযোগ রেখেছি, এবং যেগুলো Non-mendatory সে গুলুতে একটা default value দিয়ে দিয়েছি।
<textarea >….</textarea> তৈরী করার Method
এখন আমরা textareaField নামে একটা method বানাবো, যার কাজ textarea form input বানানো। নিচের কোডটি দেখুন :
1 2 3 4 5 6 | public function textareaField( $label = "" , $name , $value , $rows =3, $cols =20, $input_css_class = 'form-control' ){ $form_input = $label . ': <textarea class="' . $input_css_class . '" rows="' . $rows . '" $cols="' . $cols . '" name="' . $name . '" id="' . $name . '">' . $value . '</textarea>' ; echo $form_input ; } |
ব্যাখ্যা: উপরের textareaField Method এর মধ্যে textarea field তৈরী করার জন্য যত রকমের input field যেমন : label,name, value, rows, column এবং input field এর জন্য css class সব গুলোকে আমরা parameter হিসেবে গ্রহণ করার সুযোগ রেখেছি, এবং যেগুলো Non-mendatory সে গুলুতে একটা default value দিয়ে দিয়েছি।
<select>….</select> তৈরী করার Method
এখন আমরা selectField নামে একটা method বানাবো, যার কাজ select form input বানানো। নিচের কোডটি দেখুন :
01 02 03 04 05 06 07 08 09 10 11 12 13 | public function selectField( $label , $name , array $value = array (), $default = "" , $input_css_class = 'form-control' ){ $r = $label . ': <select class="form-control" name="' . $name . '" id="' . $name . '">' ; if ( is_array ( $value )){ foreach ( $value as $k => $v ){ if ( $k === $default ) $r .= "<option value='$k' selected>$v</option>\n" ; else $r .= "<option value='$k'>$v</option>\n" ; } } $r .= '</select>' ; echo $r ; } |
ব্যাখ্যা: উপরের selectField Method এর মধ্যে select field তৈরী করার জন্য যত রকমের input field যেমন : label,value এবং input field এর জন্য css class সব গুলোকে আমরা parameter হিসেবে গ্রহণ করার সুযোগ রেখেছি, এবং যেগুলো Non-mendatory সে গুলুতে একটা default value দিয়ে দিয়েছি।
এখন আমরা inputField,textareaField এবং selectField method এর সব ধরণের ব্যবহার দেখবো।
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <?php class formBuilder{ public function __construct( $action , $method = 'post' , $name = 'form' , $css_class = 'form-control' ){ echo '<form class="' . $css_class . '" action="' . $action . '" method="' . $method . '" id="' . $name . '">' . "\n" ; } public function __destruct(){ echo '</form>' . "\n" ; } public function inputField( $label = "" , $type , $name , $value = '' , $input_css_class = 'form-control' ){ $form_input = $label . '<input type="' . $type . '" class="' . $input_css_class . '" name="' . $name . '" id="' . $name . '" value="' . $value . '" />' ; echo $form_input ; } public function textareaField( $label = "" , $name , $value , $rows =3, $cols =20, $input_css_class = 'form-control' ){ $form_input = $label . ': <textarea class="' . $input_css_class . '" rows="' . $rows . '" $cols="' . $cols . '" name="' . $name . '" id="' . $name . '">' . $value . '</textarea>' ; echo $form_input ; } public function selectField( $label , $name , array $value = array (), $default = "" , $input_css_class = 'form-control' ){ $r = $label . ': <select class="form-control" name="' . $name . '" id="' . $name . '">' ; if ( is_array ( $value )){ foreach ( $value as $k => $v ){ if ( $k === $default ) $r .= "<option value='$k' selected>$v</option>\n" ; else $r .= "<option value='$k'>$v</option>\n" ; } } $r .= '</select>' ; echo $r ; } } $form = new formBuilder( "process.php" ); $form ->inputField( "Name :" , "text" , "firstName" ); echo "<br><br>" ; $form ->inputField( "Email :" , "email" , "email" ); echo "<br><br>" ; $form ->inputField( "Password :" , "password" , "password" ); echo "<br><br>" ; echo "Gender :" ; echo "Male " . $form ->inputField( "" , "radio" , "gender" , "Male" ); echo "Female " . $form ->inputField( "" , "radio" , "gender" , "Female" ); echo "<br><br>" ; $form ->textareaField( "Address" , "address" , "" ,3,20); echo "<br><br>" ; $form ->selectField( "Country" , "country" ,[ "Bangladesh" , "India" , "Pakistan" , "Nepal" , "Srilanka" ]); echo "<br><br>" ; echo "Remember Me" . $form ->inputField( "" , "checkbox" , "remember" ); echo "<br><br>" ; $form ->inputField( "" , "submit" , "submit" , "Submit" ); $form ->inputField( "" , "reset" , "reset" , "Reset" ); |
আউটপুট নিচের মতো করে আসবে :
এবার bootstrap দিয়ে একটা উদাহরণ দেখা যাক :
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | <?php class formBuilder{ public function __construct( $action , $method = 'post' , $name = 'form' , $css_class = 'form-control' ){ echo '<form class="' . $css_class . '" action="' . $action . '" method="' . $method . '" id="' . $name . '">' . "\n" ; } public function __destruct(){ echo '</form>' . "\n" ; } public function inputField( $label = "" , $type , $name , $value = '' , $placeholder , $input_css_class = '' ){ $form_input = $label . '<input type="' . $type . '" class="' . $input_css_class . '" name="' . $name . '" id="' . $name . '" value="' . $value . '" placeholder="' . $placeholder . '" />' ; echo $form_input ; } public function textareaField( $label = "" , $name , $value , $rows =3, $cols =20, $input_css_class = 'form-control' ){ $form_input = $label . '<textarea class="' . $input_css_class . '" rows="' . $rows . '" $cols="' . $cols . '" name="' . $name . '" id="' . $name . '">' . $value . '</textarea>' ; echo $form_input ; } public function selectField( $label , $name , array $value = array (), $default = "" , $input_css_class = 'form-control' ){ $r = $label . '<select class="form-control" name="' . $name . '" id="' . $name . '">' ; if ( is_array ( $value )){ foreach ( $value as $k => $v ){ if ( $k === $default ) $r .= "<option value='$k' selected>$v</option>\n" ; else $r .= "<option value='$k'>$v</option>\n" ; } } $r .= '</select>' ; echo $r ; } } ?> <!DOCTYPE html> <html> <head> <title>Form</title> <link rel= "stylesheet" href= "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity= "sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin= "anonymous" > </head> <body> <div class = "container" > <fieldset> <!-- Form Name --> <legend>Contact Us Today!</legend> <?php $form = new formBuilder( "process.php" , "post" , "form" , "well form-horizontal" ); ?> <div class = "form-group" > <label class = "col-md-4 control-label" >Name</label> <div class = "col-md-4 inputGroupContainer" > <div class = "input-group" > <span class = "input-group-addon" ><i class = "glyphicon glyphicon-user" ></i></span> <?php $form ->inputField( "" , "text" , "name" , "" , "Enter your Name" , "form-control" );?> </div> </div> </div> <!-- Text input--> <div class = "form-group" > <label class = "col-md-4 control-label" >E-Mail</label> <div class = "col-md-4 inputGroupContainer" > <div class = "input-group" > <span class = "input-group-addon" ><i class = "glyphicon glyphicon-envelope" ></i></span> <?php $form ->inputField( "" , "email" , "email" , "" , "Enter your E-Mail" , "form-control" );?> </div> </div> </div> <!-- Text input--> <div class = "form-group" > <label class = "col-md-4 control-label" >Password</label> <div class = "col-md-4 inputGroupContainer" > <div class = "input-group" > <span class = "input-group-addon" ><i class = "glyphicon glyphicon-lock" ></i></span> <?php $form ->inputField( "" , "password" , "password" , "" , "******" , "form-control" );?> </div> </div> </div> <!-- radio checks --> <div class = "form-group" > <label class = "col-md-4 control-label" >Gender</label> <div class = "col-md-4" > <div class = "radio" > <label> <?php echo $form ->inputField( "" , "radio" , "gender" , "Male" , "" );?> Male </label> </div> <div class = "radio" > <label> <?php echo $form ->inputField( "" , "radio" , "gender" , "Female" , "" );?> Female </label> </div> </div> </div> <div class = "form-group" > <label class = "col-md-4 control-label" >Address</label> <div class = "col-md-4 inputGroupContainer" > <div class = "input-group" > <span class = "input-group-addon" ><i class = "glyphicon glyphicon-home" ></i></span> <?php $form ->textareaField( "" , "address" , "" , "" , "" );?> </div> </div> </div> <div class = "form-group" > <label class = "col-md-4 control-label" >Country</label> <div class = "col-md-4 selectContainer" > <div class = "input-group" > <span class = "input-group-addon" ><i class = "glyphicon glyphicon-list" ></i></span> <?php $form ->selectField( "" , "country" ,[ "Bangladesh" , "India" , "Pakistan" , "Nepal" , "Srilanka" ]);?> </div> </div> </div> <!-- Button --> <div class = "form-group" > <label class = "col-md-4 control-label" ></label> <div class = "col-md-4" > <?php $form ->inputField( "" , "submit" , "submit" , "Submit" , "" , "btn btn-warning" );?> <?php $form ->inputField( "" , "reset" , "reset" , "Reset" , "" , "btn btn-success" );?> </div> </div> </div> </fieldset> </div> </div> <!-- /.container --> </body> </html> |
আউটপুট নিচের মতো করে আসবে :
2 thoughts on “PHP PDO এবং OOP দিয়ে CRUD পর্ব ২:PHP OOP FORM Builder”
Leave a Reply
You must be logged in to post a comment.
Well done!
What is the special facility if i make like this