Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty][adodb][OOP] Moja pierwsza klasa ;-)
Forum PHP.pl > Forum > PHP
KirkoR
Witam. Napisałem klasę do autoryzacji użytkownika. Czy możecie zobaczyć jak to wygląda. Ewentualne sugestie mile widziane:

[php:1:488290e59e]
function.php
<?php
class FUNC {
function Auth_Log () {
global $db, $kirkor_engine, $INFO;

$return = array();

if(isset($_SESSION['id'], $_SESSION['g_access_content']))
{
$return['id'] = $_SESSION['id'];
$return['g_access_content'] = $_SESSION['g_access_content'];
}
else
{
if($result = $db->Execute("SELECT u.id, g.g_access_content FROM ".$INFO['sql_tbl_prefix']."members u, ".$INFO['sql_tbl_prefix']."groups g WHERE"
." u.name = '".$kirkor_engine->input['Nick']."' AND u.password = '".md5($kirkor_engine->input['Pass'])."' AND g.g_id = u.mgroup"))
{
$return['id'] = $result->fields['id'];
$return['g_access_content'] = $result->fields['g_access_content'];
$_SESSION['id'] = $return['id'];
$_SESSION['g_access_content'] = $return['g_access_content'];
}
else
{// Tutaj będize się pojawiał komunikat o złym loginie/haśle}
}

return $return;
}

} // end class

?>[/php:1:488290e59e]
[php:1:488290e59e]
home.php
<?php
/*
+--------------------------------------------------------------------------
| KirkoR Engine
+--------------------------------------------------------------------------
*/

//--------------------------------
// Wybiera plik z Tekstami Systemu
//--------------------------------

$kirkor_engine->lang = $std->load_words($kirkor_engine->lang, 'lang_index', $kirkor_engine->lang_id);

//--------------------------------
// Wstawia do szablonu
//--------------------------------
$smarty->assign('Execution', $Debug->endTimer());
$smarty->assign('Stopka', $kirkor_engine->stopka);
$smarty->assign('Version', $kirkor_engine->version);
$smarty->assign('Addons', $kirkor_engine->addons);

if(isset($kirkor_engine->auth['id']))
{
$smarty->assign('Title', 'KirkoR Engine');
$smarty->assign('Welcome', $kirkor_engine->lang['welcome']);
$smarty->assign('Text', $result->fields['name']);

$smarty->assign('AUTH', $kirkor_engine->auth['id']);
$smarty->assign('AUTH2', $kirkor_engine->auth['g_access_content']);

$smarty->display('index.int.htm');
}
else
{
$smarty->assign('Title', $kirkor_engine->lang['LogIn_Titel']);
$smarty->assign('LogIn', $kirkor_engine->lang['LogIn']);
$smarty->assign('Nick', $kirkor_engine->lang['Nick']);
$smarty->assign('Pass', $kirkor_engine->lang['Pass']);
$smarty->assign('Send', $kirkor_engine->lang['Send']);
$smarty->display('login.int.htm');
}

?>[/php:1:488290e59e]
hawk
Nie wygląda to jak klasa. Coś co nie ma stanu, tylko jedną funkcję statyczną, i jeździ jak chce po zmiennych globalnych (tfu tfu) naprawdę ciężko nazwać programowaniem obiektowym.

Nie mówiąc o tym że ta "klasa" na oko nie jest używana w kodzie home.php.
KirkoR
Możliwe, że to nie jest klasa ;-) dlatego prosze o pomoc. A w pliku home.php jest ona używana do autoryzacji i przetwarzania danych wysłanych z formularza.
hawk
Hmm, więc w takiej postaci jak to aktualnie jest to lepiej w ogóle dać sobie spokój z klasą i zrobić z tego normalną funkcję. Kod strukturalny nie jest automatycznie gorszy ani głupszy, więc nie warto robić nic na siłę.

Po drugie, należy pozbyć się tylu zmiennych globalnych używanych w funkcji. Zmienne globalne są złe, niezależnie od tego czy piszemy OOP czy strukturalnie. Nawet w starym C, który był przecież bardzo strukturalny, były deklaracje extern, i można było ograniczyć zasięg zmiennych "globalnych" do jednego modułu (pliku). Więc wywal te global (poza $db, dla którego i tak nie ma alternatywy poza OOP i singletonami), i zamień na argumenty. Będzie widać, co ta funkcja robi i na czym operuje.
hwao
Coraz czesciej to widac ze ludzie myla KLASY z OOP i mysla ze jak cos jets klasa to jest oop i na odwrot.
class

Poczytaj arty na php.pl tam jets ladne opisane jak powinna wygladac dana klasa zeby była obiektowa smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.