Nieuw Met PHP OOP
Ik ben al een tijdje met php bezig en nu wil ik me ook gaan verdiepen in Object-Oriented Programming
Nu ben ik een klein check scriptje aan het maken
en nu is mijn vraag
doe ik het zo goed en ben ik op de juiste weg?
Code (php)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
mysql.class.php
<?php
class mysql
{
var $connection;
var $result;
var $sql;
function connect($host, $name, $pass, $db)
{
$this->connection = mysql_connect($host,$name,$pass);
mysql_select_db($db, $this->connection);
return true;
}
function Close()
{
mysql_close($this->connection);
return true;
}
function FetchArray($query)
{
if(is_resource($query))
{
$rows = mysql_fetch_array($query);
}
else
{
$rows = mysql_fetch_array($this->Query($query));
}
return $rows;
}
function FetchNum($query)
{
if(is_resource($query)) {
$num = mysql_num_rows($query);
}
else
{
$num = mysql_num_rows($this->Query($query));
}
return $num;
}
function Query($sql){
$this->sql = $sql;
$this->result = mysql_query($this->sql) or die(mysql_error());
return $this->result;
}
}
?>
<?php
class mysql
{
var $connection;
var $result;
var $sql;
function connect($host, $name, $pass, $db)
{
$this->connection = mysql_connect($host,$name,$pass);
mysql_select_db($db, $this->connection);
return true;
}
function Close()
{
mysql_close($this->connection);
return true;
}
function FetchArray($query)
{
if(is_resource($query))
{
$rows = mysql_fetch_array($query);
}
else
{
$rows = mysql_fetch_array($this->Query($query));
}
return $rows;
}
function FetchNum($query)
{
if(is_resource($query)) {
$num = mysql_num_rows($query);
}
else
{
$num = mysql_num_rows($this->Query($query));
}
return $num;
}
function Query($sql){
$this->sql = $sql;
$this->result = mysql_query($this->sql) or die(mysql_error());
return $this->result;
}
}
?>
Code (php)
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
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
member.class.php
<?php
class Member {
private $_member;
public function __construct( $member )
{
return $this->_member = $member;
}
public function GetMemberName()
{
$member = $this->_member;
$checkmember = Member::_UserIsLoggedIn( $member );
return $checkmember;
}
public function _UserIsLoggedIn( $member )
{
$sql = "SELECT username FROM users WHERE username='".$member."' AND online=1";
$DB = new mysql();
$query = $DB->Query($sql);
$num = $DB->FetchNum($query);
if($num == 1)
{
return "<p>Ja er bestaad een gebruiker met de naam ".$member." </p>";
}
else
{
return "<p>Er zijn geen leden geregistreerd met de naam ".$member."</p>";
}
}
public function LoginUser($naam,$pass)
{
if(!isset($_SESSION['name'])) {
$sql = "SELECT * FROM users WHERE username='".mysql_real_escape_string($naam)."' AND password='".mysql_real_escape_string($pass)."'";
$DB = new mysql();
$query = $DB->Query($sql);
$num = $DB->FetchNum($query);
if($num == 0)
{
return "<p class='reportred'>ERROR: u kunt niet inloggen.</p>";
}
else
{
$row = mysql_fetch_array($DB->Query($sql));
$sglupdate = mysql_query("UPDATE users SET online=1 WHERE username='".$row['username']."'");
$_SESSION['userid'] = $row['id'];
$_SESSION['name'] = $row['username'];
return "<p class='reportgreen'>U bent ingelogd.</p>";
}
}
else
{
echo"U bent al ingelogd";
}
}
public function LogOutUser($member)
{
if(isset($_SESSION['name']))
{
unset($_SESSION['name']);
unset($_SESSION['userid']);
header('Location: index.php');
}
}
}
?>
<?php
class Member {
private $_member;
public function __construct( $member )
{
return $this->_member = $member;
}
public function GetMemberName()
{
$member = $this->_member;
$checkmember = Member::_UserIsLoggedIn( $member );
return $checkmember;
}
public function _UserIsLoggedIn( $member )
{
$sql = "SELECT username FROM users WHERE username='".$member."' AND online=1";
$DB = new mysql();
$query = $DB->Query($sql);
$num = $DB->FetchNum($query);
if($num == 1)
{
return "<p>Ja er bestaad een gebruiker met de naam ".$member." </p>";
}
else
{
return "<p>Er zijn geen leden geregistreerd met de naam ".$member."</p>";
}
}
public function LoginUser($naam,$pass)
{
if(!isset($_SESSION['name'])) {
$sql = "SELECT * FROM users WHERE username='".mysql_real_escape_string($naam)."' AND password='".mysql_real_escape_string($pass)."'";
$DB = new mysql();
$query = $DB->Query($sql);
$num = $DB->FetchNum($query);
if($num == 0)
{
return "<p class='reportred'>ERROR: u kunt niet inloggen.</p>";
}
else
{
$row = mysql_fetch_array($DB->Query($sql));
$sglupdate = mysql_query("UPDATE users SET online=1 WHERE username='".$row['username']."'");
$_SESSION['userid'] = $row['id'];
$_SESSION['name'] = $row['username'];
return "<p class='reportgreen'>U bent ingelogd.</p>";
}
}
else
{
echo"U bent al ingelogd";
}
}
public function LogOutUser($member)
{
if(isset($_SESSION['name']))
{
unset($_SESSION['name']);
unset($_SESSION['userid']);
header('Location: index.php');
}
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Tips en commentaar is altijd welkom
M.v.g Rob
Gewijzigd op 15/03/2011 14:34:25 door Robert dat ben ik
2. Fouten afhandeling gooi excepties en vang ze op 1 plek op weg schrijven naar log en generiek fouten scherm laten tonen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @param string $host hostname
* @param string $name of iets?@
* @param string $password password natuurlijk
* @param string $db geen idee database denk ik? database name misschien?
*/
public function connect($host, $name, $pass, $db)
{
if (!$this->connection = mysql_connect($host,$name,$pass))
{
throw new Exception("Failed to connect to the database ON NOEZ");
}
if (!mysql_select_db($db, $this->connection))
{
throw new Exception("Failed to selected database ON NOEZ LALZ");
}
}
* @param string $host hostname
* @param string $name of iets?@
* @param string $password password natuurlijk
* @param string $db geen idee database denk ik? database name misschien?
*/
public function connect($host, $name, $pass, $db)
{
if (!$this->connection = mysql_connect($host,$name,$pass))
{
throw new Exception("Failed to connect to the database ON NOEZ");
}
if (!mysql_select_db($db, $this->connection))
{
throw new Exception("Failed to selected database ON NOEZ LALZ");
}
}
-> index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
try
{
$databaseDing = new DatabaseDing // <- moet natuurlijk gewoon mysql heten maar wat als je van DB engine veranderd?
// factory zou beste zijn!
$databaseDing->connect('host', 'name?', 'password', 'db?');
// rest van je applicatie shizzle
}
catch (Exception $exception)
{
// weg schrijven + mailen
// weg navigeren naar error pagina header('location: http://snel.weg.hier');
}
{
$databaseDing = new DatabaseDing // <- moet natuurlijk gewoon mysql heten maar wat als je van DB engine veranderd?
// factory zou beste zijn!
$databaseDing->connect('host', 'name?', 'password', 'db?');
// rest van je applicatie shizzle
}
catch (Exception $exception)
{
// weg schrijven + mailen
// weg navigeren naar error pagina header('location: http://snel.weg.hier');
}
3. Let op je naamgeving header.php zegt mij echt helemaal niks, zorg dat je gewoon autoloader hebt en je classes juist noemt.
4. Zorg voor opmerkingen boven je functies
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* Regelt authenticatie! en nog veel meer tekst hier
*
*/
class Authenticate
{
/**
* @param string $naam iemand zijn naam LOL!
* @return bool of hij je vader is of niet!
*/
public function IsLoggedIn($naam)
{
return ($naam == 'jeOpa');
}
}
* Regelt authenticatie! en nog veel meer tekst hier
*
*/
class Authenticate
{
/**
* @param string $naam iemand zijn naam LOL!
* @return bool of hij je vader is of niet!
*/
public function IsLoggedIn($naam)
{
return ($naam == 'jeOpa');
}
}
Liever nog ga .NET programmeren daar kan je pas echt OOP programeren.
Gewijzigd op 15/03/2011 16:27:01 door Daan l
- Zet de van $DB gewoon als private in de member class. Zo hoef je niet telkens opnieuw connectie maken.
- Gebruik PDO i.p.v. MySQL of MySQLi, dat werkt veel beter in classes.
- In de mysql class heb je var $connection maak van var public, private of protected.
Daan l op 15/03/2011 16:25:54:
1. Geen strings returnen en echos vanuit class, maar buiten de class laten regelen
2. Fouten afhandeling gooi excepties en vang ze op 1 plek op weg schrijven naar log en generiek fouten scherm laten tonen.
-> index.php
3. Let op je naamgeving header.php zegt mij echt helemaal niks, zorg dat je gewoon autoloader hebt en je classes juist noemt.
4. Zorg voor opmerkingen boven je functies
Liever nog ga .NET programmeren daar kan je pas echt OOP programeren.
2. Fouten afhandeling gooi excepties en vang ze op 1 plek op weg schrijven naar log en generiek fouten scherm laten tonen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @param string $host hostname
* @param string $name of iets?@
* @param string $password password natuurlijk
* @param string $db geen idee database denk ik? database name misschien?
*/
public function connect($host, $name, $pass, $db)
{
if (!$this->connection = mysql_connect($host,$name,$pass))
{
throw new Exception("Failed to connect to the database ON NOEZ");
}
if (!mysql_select_db($db, $this->connection))
{
throw new Exception("Failed to selected database ON NOEZ LALZ");
}
}
* @param string $host hostname
* @param string $name of iets?@
* @param string $password password natuurlijk
* @param string $db geen idee database denk ik? database name misschien?
*/
public function connect($host, $name, $pass, $db)
{
if (!$this->connection = mysql_connect($host,$name,$pass))
{
throw new Exception("Failed to connect to the database ON NOEZ");
}
if (!mysql_select_db($db, $this->connection))
{
throw new Exception("Failed to selected database ON NOEZ LALZ");
}
}
-> index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
try
{
$databaseDing = new DatabaseDing // <- moet natuurlijk gewoon mysql heten maar wat als je van DB engine veranderd?
// factory zou beste zijn!
$databaseDing->connect('host', 'name?', 'password', 'db?');
// rest van je applicatie shizzle
}
catch (Exception $exception)
{
// weg schrijven + mailen
// weg navigeren naar error pagina header('location: http://snel.weg.hier');
}
{
$databaseDing = new DatabaseDing // <- moet natuurlijk gewoon mysql heten maar wat als je van DB engine veranderd?
// factory zou beste zijn!
$databaseDing->connect('host', 'name?', 'password', 'db?');
// rest van je applicatie shizzle
}
catch (Exception $exception)
{
// weg schrijven + mailen
// weg navigeren naar error pagina header('location: http://snel.weg.hier');
}
3. Let op je naamgeving header.php zegt mij echt helemaal niks, zorg dat je gewoon autoloader hebt en je classes juist noemt.
4. Zorg voor opmerkingen boven je functies
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* Regelt authenticatie! en nog veel meer tekst hier
*
*/
class Authenticate
{
/**
* @param string $naam iemand zijn naam LOL!
* @return bool of hij je vader is of niet!
*/
public function IsLoggedIn($naam)
{
return ($naam == 'jeOpa');
}
}
* Regelt authenticatie! en nog veel meer tekst hier
*
*/
class Authenticate
{
/**
* @param string $naam iemand zijn naam LOL!
* @return bool of hij je vader is of niet!
*/
public function IsLoggedIn($naam)
{
return ($naam == 'jeOpa');
}
}
Liever nog ga .NET programmeren daar kan je pas echt OOP programeren.
Ok bedankt voor deze tip en reactie
maar zou je dit voorbeeld iets beter kunnen maken want zo snap ik er weinig van
als je wilt en tijd heb
zou je dan een sessie['name'] kunnen zetten en die uit een database halen en tonen.
ik heb users tabel en veld username
als ik de sessie zet en hij geeft bijvoorbeeld de juiste email weer dan kan ik zelf wel verder aan rotzooien :)
het is puur een voorbeeld hoe ik het moet doen
samenvatting:
zet sessie['name'] of sessie['id'] mag ook
check database op username en id of alleen id of username + mysql connect
en die weer tonen naar de pagina
dit is toch wel de basis waar ik wat mee kan denk ik
Ik hoop dat je me hier mee wilt helpen.
M.v.g
Rob
Daan l op 15/03/2011 16:25:54:
Liever nog ga .NET programmeren daar kan je pas echt OOP programeren.
Zou jij deze statement eens kunnen toelichten? Waarom is PHP OOP "nep"?