Nieuw Met PHP OOP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert  dat ben ik

Robert dat ben ik

15/03/2011 14:33:00
Quote Anchor link
Hallo mensen,

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)
PHP script in nieuw venster Selecteer het PHP script
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
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;
    }
}

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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');
        }
    }
}

?>



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
index.php
<?php
include("header.php");//de bestanden mysql.class.php + members.class.php + database verbinding
if(isset($_SESSION['name']))
{

    $user = $_SESSION['name'];
    $member = new Member($user);
    echo $member->GetMemberName();
}
else{
?>

<p>u moet ingelogd zijn om dit te mogen zien</p>
<?
}
?>


Tips en commentaar is altijd welkom

M.v.g Rob
Gewijzigd op 15/03/2011 14:34:25 door Robert dat ben ik
 
PHP hulp

PHP hulp

19/08/2022 01:38:45
 
Daan l

Daan l

15/03/2011 16:25:54
Quote Anchor link
1. Geen strings returnen en echos vanuit class, maar buiten de class laten regelen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if (!$member->isLoggedIn())
{
  echo ' je bent niet ingelogd groeten aan je moeder';
}


2. Fouten afhandeling gooi excepties en vang ze op 1 plek op weg schrijven naar log en generiek fouten scherm laten tonen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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");
    }
}

-> index.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
}


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)
PHP script in nieuw venster Selecteer het PHP script
1
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');
   }
}


Liever nog ga .NET programmeren daar kan je pas echt OOP programeren.
Gewijzigd op 15/03/2011 16:27:01 door Daan l
 
Wouter J

Wouter J

15/03/2011 16:49:33
Quote Anchor link
- Zorg voor juiste methodes namen. GetMemberName is niet heel erg toepasselijk, omdat het al in de class van de member zit. Een methode naam als getName is beter.
- 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.
 
Robert  dat ben ik

Robert dat ben ik

15/03/2011 16:52:38
Quote Anchor link
Daan l op 15/03/2011 16:25:54:
1. Geen strings returnen en echos vanuit class, maar buiten de class laten regelen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if (!$member->isLoggedIn())
{
  echo ' je bent niet ingelogd groeten aan je moeder';
}


2. Fouten afhandeling gooi excepties en vang ze op 1 plek op weg schrijven naar log en generiek fouten scherm laten tonen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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");
    }
}

-> index.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
}


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)
PHP script in nieuw venster Selecteer het PHP script
1
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');
   }
}


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
 
Gerard M

Gerard M

15/03/2011 16:55:02
Quote Anchor link
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"?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.