نوشته شده توسط
Mohammadxml
سلام مهندس شهرکی.روش استفاده از MVC بصورت Procedural چطوریه؟
اگه امکانش هست مثال لاگینی که توی
این لینک با استفاده از کلاس گفته رو بصورت Procedural توضیح بدین؟
توی مثال اون لینک که گذاشتین که یک مشکل عمده وجود داره که توی کامنتهای همون سایت هم اشاره کردم (نوشتن کوئری توی کنترلر و ارسال به مدل برای اجرا). اما درهرحال، مثال فوق رو بدون شئ گرایی (اما به روش صحیح) بازنویسی کردم تا ببینید چطور میشه:
1- View
کد HTML:
<?php
if(isset($result) && count($result) > 0) {
// Login successful, do something here
}
else {
?>
<form action="" method="post">
<?php echo (isset($message) ? '<p>' . $message . '</p>' : ''); ?>
<table>
<tr align="left"><th>Username:</th><td><input name="username" type="text" /></td></tr>
<tr align="left"><th>Password:</th><td><input name="password" type="password" /></td></tr>
</table>
<input type="submit" value="Login" />
</form>
<?php
}
?>
2- Model
کد HTML:
<?php
function Connect() {
$con = mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('myDB', $con) or die('Database error');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
return $con;
}
function GetRows($fields) {
$result = array();
if(!is_array($table, $fields, $count)) {
return false;
}
$count = (is_int($count) ? intval($count) : 0);
$con = Connect();
$table = Escape($table);
$where = '1=1';
foreach($fields as $fieldName => $fieldValue) {
$fieldName = Escape($fieldName);
$fieldValue = Escape($fieldValue);
$where .= " AND `{$fieldName}`='{$fieldValue}'";
}
$query = mysql_query("SELECT * FROM `{$table}` WHERE ({$where}) ORDER BY `id` LIMIT {$count}");
if($query && mysql_num_rows($query) > 0) {
while($row = mysql_fetch_assoc($query)) {
$result[] = $row;
}
}
return $result;
}
function Escape($str) {
$con = Connect();
return mysql_real_escape_string($str, $con);
}
?>
3- Controller
کد HTML:
<?php
require_once 'model.php';
if(isset($_POST['username'], $_POST['password'])) {
$params = array(
'username' => $_POST['username'],
'password' => md5($_POST['password'])
);
$result = GetRows('users', $params, 1);
$view = 'login-form.php';
require_once $view;
}
?>
البته این فقط یک مثاله و قطعاً وقتی پروژه بزرگتر میشه، قدرت شئ گرایی هم بیشتر به چشم میاد چون مباحثی مثل توابع همنام و... مطرح میشه (وقتی همزمان به چند مدل، ویو یا کنترلر نیاز پیدا کنیم) که این مباحث توی شئ گرایی و بخصوص با کمک قابلیت namespace به راحتی قابل رفع خواهد بود.