[PHP] classes

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig de beveiliging van mijn site te schrijven. In de voorbeelden maken ze gebruik van classes dus ben ik me daar maar eens in gaan verdiepen. Nu heb ik een aantal basis vragen over classes. Ik hoop dat jullie bereid zijn deze vragen te beantwoorden.

Kan iemand nagaan of dit klopt, dan heb ik dit tenminste al wat begrepen:
Een class is een verzameling van variabelen en functies. Variabelen worden attributes genoemd, en de functies methods.

In het voorbeeld hieronder is var $host een voorbeeld van een attribuut. En connect() is een methode.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
class mysql_actions {

        var $username;
        var $password;
    var $host;
        var $db;
        
        
        function connect(){
        
              //de connect functie.              
        }       

}
?>


Wat is in dit verhaal een instance?
$db = new mysql_actions;
Hoe noem je $db hier? Ik denk niet dat je hier over een variable kan spreken.
$db->host = "localhost";
Hoe zou je bovenstaande handeling in het Nederlands verwoorden? Gok: Stop in het attribuut host de string localhost? Hopelijk komt dit een beetje in de buurt.

Tot slot heb ik nog moeite om te begrijpen wat voor rol $this speelt.
1. Als je het over $this hebt, kun je dan van een variable spreken?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var $host;
        var $db;
        var $username;
        var $password;
        
        function connect(){
        
                $ip = $this->host;
                $db = $this->db;
                $user = $this->username;
                $pass = $this->password;
                
                //enz&#8230;
        }


2. Waarom wordt hier gebruik gemaakt van $this? Naar mijn idee wordt this gebruikt om de variables uit de classe uit te lezen. Was het niet een stuk handiger geweest als je gewoon had kunnen schrijven: $ip=$host?

Mijn excuses dat deze vragen nogal beginners vragen zijn, maar met de tutorials/boeken die ik heb kom ik er niet helemaal uit. Het basis gebruik van de classes is op zich nog niet zo lastig, maar ik wil gewoon graag goed begrijpen wat ik doe.

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Verwijderd schreef op woensdag 09 maart 2005 @ 18:11:
In het voorbeeld hieronder is var $host een voorbeeld van een attribuut. En connect() is een methode.
Dat klopt
PHP:
1
....


Wat is in dit verhaal een instance?
$db = new mysql_actions;
Hoe noem je $db hier? Ik denk niet dat je hier over een variable kan spreken.
$db is hier een instantie van je klasse, een instance dus.
$db->host = "localhost";
Hoe zou je bovenstaande handeling in het Nederlands verwoorden? Gok: Stop in het attribuut host de string localhost? Hopelijk komt dit een beetje in de buurt.
Ik zou het in 1 woord definiëren noemen. Maar daar is vast een technischere term voor ;)
Tot slot heb ik nog moeite om te begrijpen wat voor rol $this speelt.
1. Als je het over $this hebt, kun je dan van een variable spreken?
Volgens mij maakt de $this->voorbeeld gewoon duidelijk dat het om het attribuut "voorbeeld" gaat dat in *deze* instantie van de klasse is gedeclareerd. Technisch gezien is $this dus gewoon een referentie naar de huidige instantie en dus een instantie, maar wel een speciale ;)
PHP:
1
...

2. Waarom wordt hier gebruik gemaakt van $this? Naar mijn idee wordt this gebruikt om de variables uit de classe uit te lezen. Was het niet een stuk handiger geweest als je gewoon had kunnen schrijven: $ip=$host?
Zoals je zelf al aangaf is $host een attribuut in je klasse en dus niet zomaar een variabele. Afaik kun je attributen binnen je hele klasse alszijnde globaal aanspreken en een gewone variabele allen binnen zijn eigen scope. $ip is dus niet gedeclareerd buiten je functie, $this->host wel. Als je $this->host binnen een functie aanpast heeft dat ook buiten je functie effect. Op PHP.NET schrijven ze er dit over:
php.net
Within a class definition, you do not know under which name the object will be accessible in your program: at the time the Cart class was written, it was unknown that the object will be named $cart or $another_cart later. Thus, you cannot write $cart->items within the Cart class itself. Instead, in order to be able to access it's own functions and variables from within a class, one can use the pseudo-variable $this which can be read as 'my own' or 'current object'. Thus, '$this->items[$artnr] += $num' can be read as 'add $num to the $artnr counter of my own items array' or 'add $num to the $artnr counter of the items array within the current object'.

[ Voor 25% gewijzigd door T-MOB op 09-03-2005 18:46 ]

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022

tombo_inc

uhuh

een klasse is een "raamwerk" waarin je een object beschrijft. een classe bevat alle methode's (functies) en eigenschappen (vars) van een object. als je het object maakt (instantieerd) dan koppel je de klasse aan een variabele (lees naam). als je binnen het object naar een member (functie of var) wil verwijzen dan gebruik je $this.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Je vragen hebben heel erg betrekking op de basis van het OO concept. Een beetje tutorial die ingaat op de aspecten van OO zullen je het verschil tussen een klasse en een instantie wel uitleggen. Het gebruik van this e.d. zal ook daarin worden meegenomen.

Ik zou je willen vragen je eerst nog wat verder te verdiepen in OOP. Dat wat je nu vraagt is echt hele algemene kennis van OO, iets waarvan we eigenlijk verwachten dat je zelf in staat bent om je die kennis eigen te maken. Met deze vragen is het topic eigenlijk van een te laag niveau voor op GoT.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney