Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 24-10-2002, 19:04
Kozak
Avatar van Kozak
Kozak is offline
Ik heb net OOP programmeren ontdekt, en ik ben nog een beetje spoorloos.
Ik heb gehoord dat alle variablen die je gebruikt in je classe, in je classe gedefinieerd moeten zijn.
Ik neem het volgende voorbeeld:
PHP-code:
class page{

    var 
$m_lib_path;        // path from including file to /lib/
    
var $m_base_url;        // in this case, "http://www.xxxxxx.com/"
    
var $m_title;            // string
    
var $m_linkbar;            // array of associative arrays
                    // "name" => link text, "url" => link href, "alt" => alt text
    
var $m_content;            // string
    
var $m_section;            // string
    
var $m_menu;            // array of associative arrays
                    // "key" => menu key, "title" => menu title, 
                    // "style" => menu style attributes, "content" => menu content
    
var $m_icon;            // string
    
var $m_header;            // string for extra stuff to add to the header (scripts, meta tags etc)
    
var $m_session;            // contains an associative array of the user data
    
var $m_con;            // MySQL connection
    
var $m_time;

/* ----------- CONSTRUCTOR ----------- */

    
function page($lib_path$session$base_url "http://www.xxxxx.com")
    {
        
$this->m_time            $this->getmicrotime();
        
$this->m_lib_path        $lib_path;
        
$this->m_base_url        $base_url;
        
$this->m_title            "";
        
$this->m_linkbar        = array();
        
$this->m_content        "";
        
$this->m_section        "";
        
$this->m_menu            = array();
        
$this->m_icon            "siteicon.ico";
        
$this->m_header            "";
        
$this->m_session        = array();
        
$this->con mysql_connect("xxxxx""jxxx""xxxx") or die("Error connecting to the database");
        
mysql_select_db("xxxx"$this->con) or die("Error selecting database");
        
$this->setSession($session);
    }

Ik zie hier in allemaal variabelen die niet zijn gedefinieerd, zoals bijvoorbeeld '$this','$lib_path'. Daarentegen zie ik de gedefineerde variabelen allemaal achter het object $this staan. Dus zijn dit eigenlijk geen variabelen? Weet iemand me te helpen?
__________________
Een goed lid verslapt niet.
Met citaat reageren
Advertentie
Oud 24-10-2002, 19:43
jungle_brother
jungle_brother is offline
Met "this" geef je aan dat het de variabelen in de klasse zelf betreft. Het is een verwijzing naar het object "page". Corrigeer me maar als dit fout is....
De variabele "$lib_path" wordt als argument met de functie meegegeven. Deze hoeft daarom niet perse in de klasse zelf gedefinieerd te worden. Echter wanneer je een variabele in klasse "$lib_path" noemt, moet je deze een waarde geven middels de code $this->lib_path = $lib_path;.
Dit vult de variabele in de klasse met de waarde meegeven via het argument in de functie.
Even een JAVA voorbeeld (Lijkt veel op PHP):

// Een stukje code van mijn Tetris Applet

protected class Matrix {

protected int xyz[][];

Matrix (int xyz[][]) {
this.xyz = new int[4][8];
if (xyz != null) {
for (int i=0; i<4; i++)
for (int j=0; j<8; j++) {
this.xyz[i][j] = xyz[i][j];
}
}
}

}

Je ziet dat xyz als argument wordt meegeven, maar ook in de klasse bestaat. Om nu conform de regels deze variabele te vullen, moet dit gedaan worden met de regel this.xyz[i][j] = xyz[i][j];.

Ik hoop dat je deze uitleg een beetje snapt.....
__________________
Ik ben Kermit the frog

Laatst gewijzigd op 24-10-2002 om 19:59.
Met citaat reageren
Oud 25-10-2002, 08:16
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
jungle_brother schreef:
Met "this" geef je aan dat het de variabelen in de klasse zelf betreft. Het is een verwijzing naar het object "page". Corrigeer me maar als dit fout is....
$this is PHP is gewoon een reference naar 'jezelf'. Je kunt $this dus gewoon als object benaderen, alle variabelen en methoden zijn gewoon bereikbaar, en je kunt $this ook in een functie retourneren. Je zou 'this' ook 'ikzelf' kunnen noemen.

$this wordt meestal gebruikt om member variabelen te benaderen als deze door lokale variabelen onzichtbaar zijn gemaakt. Voorbeeld:

Code:
public class Test {
    private int testInt = 0;

    public void addA(int testInt) {
         testInt += testInt;
         /*
          * Dit doet niks omdat je een lokale var bij een lokale var
          * optelt. De lokale var verbergt de member var.
          */
   }

    public void addB(int testInt) {
         this.testInt += testInt;
         /*
          * En dit werkt prima.
          */
   }
}
Java voorbeeldje, maar in PHP en (bijvoorbeeld) C# werkt dit precies hetzelfde.
Met citaat reageren
Oud 25-10-2002, 16:35
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Alleen is $this in PHP verplicht, terwijl het in Java alleen gebruikt wordt om onderscheid te maken als dat niet duidelijk is tussen een lokale en een object-wide variabele.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Software & Hardware [Algemeen/Discussie] Open Source
ILUsion
18 29-09-2005 03:30
Software & Hardware [Software] Apache: problemen met trailing slash
Verwijderd
5 01-03-2005 17:27
Software & Hardware [PHP] Online enquete
Paperz
11 31-01-2005 11:36
Software & Hardware LDU206 probleem.
©ha0$
2 19-12-2003 20:20
Software & Hardware [php/mysql/javascript] Automatisch sluiten en vernieuwe
micra
18 16-08-2003 18:05
Software & Hardware (PHP)gastenboek
spsup
11 04-05-2003 18:02


Alle tijden zijn GMT +1. Het is nu 17:34.