[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сравнение 2 класов. Прошу подсказки в наследовании
m4a1fox
Господа, ну что ж, я продолжаю. Сейчас читаю про наследование методов из одного класса в другой. Итак, что мы имеем. Есть 2 класса. Класс №1 - добаление данных в БД в таблицу --member--. Класс №2 - добавление админов в БД в таблицу --login--. Итак 2 класса.
№1. class.user.php

class showLogin extends connect_Db {

private static $table = 'member';

/**
* Check for empty fields in the form
*/

function empty_check($post) {
$error = array();
foreach ($post as $key=>$value) {
if(empty($value)) {
$error[] = $key;
}
}

return $error;
}

/**
* Translate empty fiels to russian
*/

function empty_translit($post) {
$array_rus = array(
'name' => 'Имя',
'pass' =>'Пароль',
'email' =>'Email'
);

foreach($post as $var){
$ret .= $array_rus[$var].', ';
}
return $ret;
}

/**
* Clean the data
*/

private function clean_text($str) {
if(get_magic_quotes_gpc() == 1) {
$srt = str_replace("<", "&lt", $str);
$srt = str_replace(">", "&gt", $str);
} else {
$str = htmlspecialchars($str, ENT_QUOTES, "UTF-8", false);
}
return $str;
}

/**
* method for insert data to db
*/

function str_data($post) {
$aux_data = array();
foreach($post as $key=>$value) {
$aux_data[$key] = $this->clean_text($value);
}
return $this->insert_user($aux_data);
}

/**
* method for checking the name in table login
*/

function check_name($post) {
$sql = "SELECT COUNT(*) FROM `".self::$table."` WHERE `name` = '".$post['name']."'";
$true = connect_Db::sql($sql);
if(mysql_result($true, 0) != 0) {
$false = true;
}
return $false;
}

/**
* method string for insert
*/

function insert_user($post) {
$sql = "INSERT INTO `".self::$table."` SET
`name` = '"
.$post['name']."',
`pass` = '"
.$post['pass']."',
`encode` = '"
.$post['email']."'
"
;
//echo $sql;
return connect_Db::sql($sql);
}

function select_user($post) {
$sql = "SELECT * FROM `".self::$table."` WHERE `id`='".$post."'";
$res = connect_Db::sql($sql);
$row = mysql_fetch_assoc($res);
$name = $row;
return $name;
}

function update_user($post, $get) {
$sql = "UPDATE `".self::$table."` SET
`name` = '"
.$post['name']."',
`pass` = '"
.$post['pass']."',
`encode` = '"
.$post['email']."'
WHERE `id` = '"
.$get."'
"
;
return connect_Db::sql($sql);
}

/**
* select users from table #1
*/

private function return_user() {
$sql = "SELECT * FROM `".self::$table."` ORDER BY `id` DESC";
return connect_Db::sql($sql);
}

/**
* select users from table #2
*/

function show_user() {
$res = $this->return_user();
if(mysql_num_rows($res) > 0) {
while($row = mysql_fetch_assoc($res)) {
$name[$row['id']] = $row;
}
}
else {
echo 'String in db is empty';
}
return $name;
}

/**
* delete user from db
*/

function delete_user($get) {
$sql = "DELETE FROM `".self::$table."` WHERE `id` = '".$get."'";
return connect_Db::sql($sql);
}
}

$user = new showLogin; // select object


Класс №2. class.addadmin.php

class addAdmin extends connect_Db {
private static $table = 'login'; //table in BD for autorization
private $name; //name from the $_POST
private $pass; //pass from the $_POST
private $encode; // encode. var use md5($pass) from the $_POST

function __construct($name, $pass) {
$this->name = !empty($name)?mysql_real_escape_string($name):NULL;
$this->pass = !empty($pass)?mysql_real_escape_string($pass):NULL;
$this->encode = !empty($pass)?md5($pass):NULL;
}

function empty_check($post) {
$error = array();
foreach ($post as $key=>$value) {
if(empty($value)) {
$error[] = $key;
}
}

return $error;
}

function empty_translit($post) {
$array_rus = array(
'name' => 'Логин',
'pass' =>'Пароль',
);


foreach($post as $var){
$ret .= '<b>'.$array_rus[$var].'</b> ';
}
return $ret;
}

private function clean_text($str) {
if(get_magic_quotes_gpc() == 1) {
$srt = str_replace("<", "&lt", $str);
$srt = str_replace(">", "&gt", $str);
} else {
$str = htmlspecialchars($str, ENT_QUOTES, "UTF-8", false);
}
return $str;
}

function str_data($post) {
$aux_data = array();
foreach($post as $key=>$value) {
$aux_data[$key] = $this->clean_text($value);
}
return $this->addToDb($aux_data);
}

function check_name($post) {
$sql = "SELECT COUNT(*) FROM `".self::$table."`
WHERE `name` = '"
.$post['name']."'";
$true = connect_Db::sql($sql);
if(mysql_result($true, 0) != 0) {
$false = true;
}
return $false;
}

function show() {
return $this->name;
}

function addToDb() {
$sql = "INSERT INTO `".self::$table."` SET
`name` = '"
.$this->name."',
`pass` = '"
.$this->pass."',
`encode` = '"
.$this->encode."'
"
;
return connect_Db::sql($sql);
}
}


$add = new addAdmin($_POST['name'], $_POST['pass']);


50% из второго класса почти повторяют теже методы что и в первом. Так же, насколько я понимаю, сама суть ооп в том, что бы использовать несколько раз один и тот же метод... Не переписывая код. Поэтому у кого есть время, кто не очень загружен на работе, или просто скучно, подскажите, как лучше сделать наследование методов? И вообще по коду, какие будут предположения и ошибки кто какие заметил. Спасибо.
P.S Отдельное спасибо всем кто помогал в предыдущей теме.



Спустя 10 минут, 56 секунд (15.07.2011 - 14:02) m4a1fox написал(а):
Общие методы, присутствующие в обих классах

1. empty_check();
2. empty_translit();
3. clean_text();
4. str_data();
5. check_name();

Спустя 31 минута, 32 секунды (15.07.2011 - 14:33) m4a1fox написал(а):
Уважаемые програмисты, ну неужели все так просто??????



Спустя 6 минут, 43 секунды m4a1fox написал(а):
То есть простое наследование, и 5 методов что выше можно смело удалять?

Спустя 1 час, 26 минут, 26 секунд (15.07.2011 - 16:00) alex12060 написал(а):
Почитай про parent

Спустя 1 час, 37 минут, 51 секунда (15.07.2011 - 17:38) m4a1fox написал(а):
alex12060
А если вот так?
class #1. class.user.php

class showLogin extends connect_Db {

private static $table = 'member';

/**
* Check for empty fields in the form
*/

function empty_check($post) {
$error = array();
foreach ($post as $key=>$value) {
if(empty($value)) {
$error[] = $key;
}
}

return $error;
}

/**
* Translate empty fiels to russian
*/

function empty_translit($post) {
$array_rus = array(
'name' => 'Имя',
'pass' =>'Пароль',
'email' =>'Email'
);

foreach($post as $var){
$ret .= '<b>'.$array_rus[$var].'</b>, ';
}
return $ret;
}

/**
* Clean the data
*/

private function clean_text($str) {
if(get_magic_quotes_gpc() == 1) {
$srt = str_replace("<", "&lt", $str);
$srt = str_replace(">", "&gt", $str);
} else {
$str = htmlspecialchars($str, ENT_QUOTES, "UTF-8", false);
}
return $str;
}

/**
* method for insert data to db
*/

function str_data($post) {
$aux_data = array();
foreach($post as $key=>$value) {
$aux_data[$key] = $this->clean_text($value);
}
return $this->insert_user($aux_data);
}

/**
* method for checking the name in table login
*/

function check_name($post) {
$sql = "SELECT COUNT(*) FROM `".self::$table."` WHERE `name` = '".$post['name']."'";
$true = connect_Db::sql($sql);
if(mysql_result($true, 0) != 0) {
$false = true;
}
return $false;
}

/**
* method string for insert
*/

function insert_user($post) {
$sql = "INSERT INTO `".self::$table."` SET
`name` = '"
.$post['name']."',
`pass` = '"
.$post['pass']."',
`encode` = '"
.$post['email']."'
"
;
//echo $sql;
return connect_Db::sql($sql);
}

function select_user($post) {
$sql = "SELECT * FROM `".self::$table."` WHERE `id`='".$post."'";
$res = connect_Db::sql($sql);
$row = mysql_fetch_assoc($res);
$name = $row;
return $name;
}

function update_user($post, $get) {
$sql = "UPDATE `".self::$table."` SET
`name` = '"
.$post['name']."',
`pass` = '"
.$post['pass']."',
`encode` = '"
.$post['email']."'
WHERE `id` = '"
.$get."'
"
;
return connect_Db::sql($sql);
}

/**
* select users from table #1
*/

private function return_user() {
$sql = "SELECT * FROM `".self::$table."` ORDER BY `id` DESC";
return connect_Db::sql($sql);
}

/**
* select users from table #2
*/

function show_user() {
$res = $this->return_user();
if(mysql_num_rows($res) > 0) {
while($row = mysql_fetch_assoc($res)) {
$name[$row['id']] = $row;
}
}
else {
echo 'String in db is empty';
}
return $name;
}

/**
* delete user from db
*/

function delete_user($get) {
$sql = "DELETE FROM `".self::$table."` WHERE `id` = '".$get."'";
return connect_Db::sql($sql);
}
}

$user = new showLogin; // select object


class #2. class.addadmin.php

class addAdmin extends showLogin {
private static $table = 'login'; //table in BD for autorization
private $name; //name from the $_POST
private $pass; //pass from the $_POST
private $encode; // encode. var use md5($pass) from the $_POST

function __construct($name, $pass) {
$this->name = !empty($name)?mysql_real_escape_string($name):NULL;
$this->pass = !empty($pass)?mysql_real_escape_string($pass):NULL;
$this->encode = !empty($pass)?md5($pass):NULL;
}


function check_name($post) {
$sql = "SELECT COUNT(*) FROM `".self::$table."`
WHERE `name` = '"
.$post['name']."'";
$true = connect_Db::sql($sql);
if(mysql_result($true, 0) != 0) {
$false = true;
}
return $false;
}

function insert_user() {
$sql = "INSERT INTO `".self::$table."` SET
`name` = '"
.$this->name."',
`pass` = '"
.$this->pass."',
`encode` = '"
.$this->encode."'
"
;
return connect_Db::sql($sql);
}
}


$add = new addAdmin($_POST['name'], $_POST['pass']);

Вроде работает! И да. Про parent читаю.... Только как мне его применить, не знаю :(

И насчет применитя класса. Немножко странно, но так вот

$empty = $add->empty_translit($add->empty_check($_POST));
if(isset($_POST['send'])) {
if($add->empty_check($_POST) == false) {
if($add->check_name($_POST) == false) {
$add->str_data($_POST);
echo 'The string is add to login table';
}else {
echo 'Name is already exist. Please choose the other <b>name</b>';
}
}
else {
echo '<br />Some of the fields is empty. '.$empty;
}
}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.