Object georienteerd programmeren in PHP

Door Winston Smith, 19 jaar geleden, 9.713x bekeken

Korte inleiding in het object georienteerd programmeren met PHP.

Gesponsorde koppelingen

Inhoudsopgave

  1. Wat is object georienteerd programmeren?
  2. Lekker zelf programmeren :P
  3. conclusie

 

Er zijn 39 reacties op 'Object georienteerd programmeren in php'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Bram Z
Bram Z
19 jaar geleden
 
0 +1 -0 -1
Ofwel ben ik verkeerd maar je legt toch gewoon classes uit ???
Bas Kreleger
Bas Kreleger
19 jaar geleden
 
0 +1 -0 -1
wat denk je wat classes zijn :)
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Objecten :D

Dit is mijn database script (de standaard dan :))
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
<?php
    # Filename : database.php
    # Author : Mitch Vroege
    # Projectname : nvt
    # Projectversion : nvt
    # Releasedate : nvt

    
    class Database
    {
        # Database vars
        var $user = "User";
        var
$pass = "Pass";
        var
$host = "localhost";
        var
$name = "DBname";
        
        # Functie die mysql_num_rows teruggeeft
        function num_rows($sql)
        {

            $this->connect();
            $res = mysql_query($sql);
            $aantal = mysql_num_rows($res);
            mysql_close();
            
            return $aantal;
        }

        
        # Functie de mysql_fetch_array teruggeeft
        function get_array($sql)
        {

            $this->connect();
            $res = mysql_query($sql);
            while($data = mysql_fetch_array($res))
                $row[] = $data;
                
            mysql_close();
                
            return $row;
        }

        
        # Zelfde als hierboven maar dan 1 row
        function get_single($sql)
        {

            $this->connect();
            $res = mysql_query($sql);
            $data = mysql_fetch_array($res);
            mysql_close();
            
            return $data;
        }

        
        # Functie die een normale query runt
        function execute($sql)
        {

            $this->connect();
            $res = mysql_query($sql);
            mysql_close();
            
            return $res;
        }

        
        # Functie die de database connectie maakt
        function connect()
        {

            return mysql_select_db($this->name, mysql_connect($this->host, $this->user, $this->pass));
        }
    }

?>
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Inderdaad, je kan ook meerdere functies in een klasse doen :)

Dan wordt het simpeler om een goede foutafhandeling in te bouwen.

@Dark, zoals je leest: je bent verkeerd :P
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
K schrijf alles in classen, wel leuk zo'n tut dan :)
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Tot voor kort schreef ik alles uit de losse pols zonder klassen en bijna geen functies, maar omdat ik nu aan een redelijk groot project werk werd ik haast gedwongen om OO te programmeren.

En 't is natuurlijk erg stoer ;)
Bas Kreleger
Bas Kreleger
19 jaar geleden
 
0 +1 -0 -1
eej Mitch, post die db class ! :P

Zal ik een categorie genaamd 'classes' aanmaken??
Bram Z
Bram Z
19 jaar geleden
 
0 +1 -0 -1
Ja want ik weet eigenlijk weinig over classes omdat er bijna niets van clasees op deze site staan.
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Kheb diej db class toch al gepost?
Dbr Br
Dbr Br
19 jaar geleden
 
0 +1 -0 -1
Ik werk zelf ook altijd met classes. Het grootste voordeel eraan vind ik dat je veel meer structuur in je code krijgt.
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
@Bas: goed idee!
Bij de weg, misschien ook een idee om een rating systeem in te bouwen voor scripts en tutorials?
Arend a
Arend a
19 jaar geleden
 
0 +1 -0 -1
Echte bikkels gebruiken pear.
http://cvs.php.net/pear/DBA/DBA.php
Stefan
stefan
19 jaar geleden
 
0 +1 -0 -1
PHP is toch geen object georienteerde programmeertaal...
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Waarom zou PHP anders classes kennen?
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Het is niet echt object georienteerd in de zin dat het geen meervoudige overerving, interfaces, abstracte klassen, overloading, privacy en destructors ondersteund. Wel kan je verketende subclassificatie gebruiken in PHP 4.
Met de komst van PHP 5 echter zijn enkele van voorgenoemde aspecten van OOP wel opgenomen en komt PHP dus een stuk dichter bij het zijn van een 'echte' object georienteerde programmeertaal.

Daarnaast kan je je afvragen of je bovengenoemde aspecten wel nodig hebt. Vaak zijn er meerdere wegen die naar Rome leiden en bij een simpel project kan je ook wel zonder de diepergaande functionaliteiten van OOP. Feit is, dat de basisfunctionaliteit van OOP aanwezig is.

-- Met dank aan 'Het complete HANDboek PHP4 -- ;)
PrisonerOfPain
PrisonerOfPain
19 jaar geleden
 
0 +1 -0 -1
PHP5 heeft geen multiple inheritance en overloading van methoden.
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Met de komst van PHP 5 echter zijn enkele van voorgenoemde aspecten van OOP wel opgenomen en komt PHP dus een stuk dichter bij het zijn van een 'echte' object georienteerde programmeertaal.
PrisonerOfPain
PrisonerOfPain
19 jaar geleden
 
0 +1 -0 -1
Mijn fout, maar nou is het in ieder geval duidelijk welke aspecten er niet in PHP5 zitten. (Zijn er wel meer, denk namespace, maar die uit jou lijstje)
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Da's waar :)

Had ook geen zin en tijd om uit te zoeken welke aspecten wel en welke niet in PHP 5 zaten.

Dus bedankt voor je reactie :)
PrisonerOfPain
PrisonerOfPain
19 jaar geleden
 
0 +1 -0 -1
Jammer dat je er - blijkbaar - nog niet mee hebt mogen werken. Zit een hoop leuk speelgoed in, hoewel het allemaal niets nieuws is in de OOP wereld.
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Kmoet toch eens m'n C++ boek afmaken, lijkt me wel stoer :)
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Nee, ik had PHP 5 geinstalleerd naast mijn PHP 4, en dat werkte wel even. Belangrijkste waarom ik php 5 weer even op non-actief heb gesteld was dat MySQL functies op dat moment nog wat bugs vertoonden.

@Mitch: C++ is inderdaad leuk ;) Vooral Visual C++, wat ik zelf ook nog moet leren, lijkt me wel cool! Probleem is alleen dat ik vaak in linux zit en de meeste handelingen voor Windows zijn geschreven :(
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Visual C++?
Nah ik doelde op C++ normaal :P

Kheb zo'n 750 pagina's dik boek, uit engeland, maar is Amerikaans ;)
Mja khad geen zin meer omdat het zo veel ineens is en de resultaten nogal eens tegenvallen, hehe.
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Ja, de normale C++ had ik ook uit zo'n groot boek geleerd. C++ in 21 dagen heette het geloof ik. Maar was wel straffe kost om daar doorheen te komen. Heb toen ook maar een basiscursusboekje C++ aangeschaft, en dat ging een stuk makkelijker.
Maar ja, je ziet minder snel resultaat dan bij PHP he :) Maar als je goed oefent, kan je er ook leukere dingen mee doen dan met PHP denk ik.

Wil nog eens een progje schrijven in C++ waarmee je een lcd scherm kan aansturen en eentje waarmee je een gsm kan bedienen (voor adresboek en smsjes bijhouden via de pc of sms sturen vanaf de pc).
Dat duurt vast nog wel even voordat dat lukt :)
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Met Visual Basic (bleh :P) gaat dat wel makkelijk geloof ik :)
Daarmee heb ik eens een chatproggie gemaakt, was nogal simpel :P
PrisonerOfPain
PrisonerOfPain
19 jaar geleden
 
0 +1 -0 -1
Mitch, Visual basic is een makkelijke taal, een leuke taal maar wel een ontiegelijk trage taal. Bijvoorbeeld; probeer eens een syntax highlighter te schrijven voor een RichtTextBox. Duurt makkelijk een minuut lbij een normaal bestand om er doorheen te werken. Dezelfde implementatie in C++ was vele malen sneller, omdat je daar niet tig abstractie lagen hebt te gebruiken. Nadeel is wel de steilere leer curve.
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Daarnaast is VB alleen beschikbaar voor Windows (toch?).
En ik wil mijn programmatuur graag compatibel maken met Linux, omdat ik daar vaak in werk.

Maar ik las vandaag inderdaad dat de IDE en dan vooral de COM-objecten erg makkelijk te gebruiken zijn in VB. Misschien toch maar eens proberen dan...
PrisonerOfPain
PrisonerOfPain
19 jaar geleden
 
0 +1 -0 -1
Delphi heeft ook een linux equivalent :-)
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Is dat een beetje simpel?


19 jaar geleden
 
0 +1 -0 -1
PHP is vooralsnog niet echt OO te noemen in de zin dat je er geen ene reet aan hebt. Ik programmeer liever in generieke functies dan overal een klasse te gaan creeeren puur om er 1 functie van aan te roepen... als er nu (multi) inheritance etc in komt ga ik het misschien overwegen... tot nu toe vind ik het niet zo werken als ik in bv Delphi gewend ben.
Martijn
Martijn
19 jaar geleden
 
0 +1 -0 -1
@Mitch: in je functie om rows te tellen met mysql_num_rows laat je de query eerst nog 'ns uitvoeren?
Lekker is dat....
En bij het fetchen ook nog 'ns?
Stel je voor dat ik dit wil:
- Een heleboel data selecteren (500.000 rows bv.)
- Tellen hoeveel ik nu precies geselecteerd heb
- Die data fetchen en gebruiken voor iets

Dan voer ik dus 3x dezlfde query uit! (ik moet toegeven dat de eerste overbodig is, maar misschien wil ike r nog wel iets mee doen wat niet kan met je class)...

Verder vind ik het vreemd om 'n class te maken om te connecten met je database....
Dat is ??n functie, daar ga je toch geen class voor maken? Had liever uitgelegd hoe het werkt om 'n complete db-class te maken.

Dan had je ook dingen als $this kunnen bespreken.
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Als je meerdere dingen nodig hebt zal je execute($sql) moeten gebruiken,
en zelf al die dinge op te zoeken via de bijbehorende functies :)


19 jaar geleden
 
0 +1 -0 -1
Gebruik zelf ook een klasse voor een db connectie, altijd handig omdat je hem dan kan hergebruiken:

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
<?php

/*
*    @desc        MySQL Database Engine.
*    @version    1.0 [30-03-2004]
*/



class Database
{
    var
$sHost;                //Hostname
    var $sDatabase;            //Databasename
    var $sUser;                //Username
    var $sPassword;            //Password
    
    var $aRecord = Array();    //Current record
    var $iRow;                //Current row
    
    var $bAutoFree = True;    //Autofree query
    var $bDebug = False;    //Toggle debugging
        var $bShowErrors = True; //Toggle showing errors
    
    var $iErrorNr;            //Last MySQL Errornr
    var $sError;            //Last MySQL Error
    
    var $iConnectionID;        //Current connectionid
    var $iQueryID;            //Current queryid
    
    /**
    * @return void
    * @param $sHost String
    * @param $sDatabase String
    * @param $sUser String
    * @param $sPassword String
    * @param $bDebug Boolean
    * @desc Database class constructor.
     */

    function Database($sHost = '', $sDatabase = '', $sUser = '', $sPassword = '',$bDebug = False, $bShowErrors = True)
    {

            $this->bDebug = $bDebug;
                $this->bShowErrors = $bShowErrors;

        $this->Connect($sHost, $sDatabase, $sUser, $sPassword);
    }

    
    /**
    * @return Integer [ConnectionID]
    * @param $sHost String
    * @param $sDatabase String
    * @param $sUser String
    * @param $sPassword String
    * @desc Establish a connection and select a database
     */

    function Connect($sHost = '', $sDatabase = '', $sUser = '', $sPassword = '')
    {

        $this->sHost = $sHost;
        $this->sDatabase = $sDatabase;
        $this->sUser = $sUser;
        $this->sPassword = $sPassword;
            
        // Establish connection and select database.
        if (! $this->iConnectionID)
        {
            
            $this->iConnectionID = @mysql_connect($this->sHost, $this->sUser, $this->sPassword);
            
            if (!$this->iConnectionID)
            {
    
                $this->iErrorNr = @mysql_errno($this->iConnectionID);
                $this->sError = @mysql_error($this->iConnectionID);
                $this->Error("No connection with host: " . $this->sHost);            
                return 0;
            }


            if (!@mysql_select_db($this->sDatabase,$this->iConnectionID))
            {

                $this->iErrorNr = @mysql_errno($this->iConnectionID);
                $this->sError = @mysql_error($this->iConnectionID);
                $this->Error("No connection with database: " . $this->sDatabase);
                $this->Disconnect();
                return 0;
            }
        }

        
        return $this->iConnectionID;
    }

    
    /**
    * @return Integer
    * @desc Disconnect from server.
     */

    function Disconnect()
    {

        if($this->iConnectionID <> 0)
        {            
            @
mysql_close($this->iConnectionID);
            $this->iConnectionID = 0;
            return 1;
        }

        else
        {
            return 0;
        }
    }

    
    /**
    * @return Integer [QueryID]
    * @param $sQuery String
    * @param $Line Line parameter
    * @param $File File parameter
    * @desc Execute a query.    
     */

    function Query($sQuery, $Line = '', $File = '')
    {

        if(!$this->iConnectionID)
        {

            $this->Error("No connection with MySQL database.");
            return False;
        }

        // Accept no empty query.
        if ($sQuery == '')
        {

            return 0;
        }

        
        // New query, discard previous result.
        if ($this->iQueryID)
        {

            $this->free();
        }

        
        if ($this->bDebug == True)
        {

            print "Debug: Query = " . $sQuery . "<br>";    
        }

        
        $this->iQueryID = @mysql_query($sQuery,$this->iConnectionID);
        $this->iRow   = 0;
        
        if (! $this->iQueryID)
        {

                        if($this->bShowErrors)
                        {

                    $this->iErrorNr = @mysql_errno($this->iConnectionID);
                    $this->sError = @mysql_error($this->iConnectionID);
                    $this->Error("Invalid SQL: " . $sQuery, $Line, $File);
                        }
        }

        
        // Will return nothing if it fails.
        return $this->iQueryID;
    }

    
    /**
    * @return Integer [QueryID]
    * @param $sQuery String
    * @param $iStartRow Integer
    * @param $Line Line parameter
    * @param $File File parameter
    * @param $iNumRows Integer
    * @desc Execute a query with limited result.    
     */

    function LimitQuery($sQuery, $iStartRow = 0, $iNumRows = 10, $Line = '', $File = '')
    {

        $iStartRow    = intval($iStartRow);
        $iNumRows    = intval($iNumRows);

        if ($iStartRow == 0)
        {

            $sQuery .= ' LIMIT ' . $iNumRows;
        }

        else
        {
            $sQuery .= ' LIMIT ' . $iStartRow . ',' . $iNumRows;
        }
        

        return $this->Query($sQuery, $Line, $File);
    }

    
    /**
    * @return void
    * @desc Free the query-result.    
     */

    function Free()
    {
        @
mysql_free_result($this->iQueryID);
        $this->iQueryID = 0;
    }

    
    /**
    * @return Boolean [Another row found?]
    * @desc Move to the next row in the recordset.    
     */

    function NextRecord()
    {

        if (!$this->iQueryID)
        {

            $this->Error("NextRecord called with no query pending.");
            return 0;
        }


        $this->aRecord = @mysql_fetch_array($this->iQueryID);
        $this->iRow   += 1;
        $this->iErrorNr = @mysql_errno($this->iConnectionID);
        $this->sError = @mysql_error($this->iConnectionID);        

        $bStat = is_array($this->aRecord);
        
        if (!$bStat && $this->bAutoFree)
        {

            $this->Free();
        }

        
        return $bStat;
    }

    
    /**
    * @return Boolean
    * @param $iPosition Integer
    * @desc Move to given position in recordset.    
     */

    function SetPosition($iPosition = 0)
    {

        if (!$this->iQueryID)
        {

            $this->Error("SetPosition($iPosition) called with no query pending.");
            return 0;
        }

        
        if (@mysql_data_seek($this->iQueryID, $iPosition))
        {

            $this->iRow = $iPosition;
        }

        else
        {
            $this->iErrorNr = @mysql_errno($this->iConnectionID);
            $this->sError = @mysql_error($this->iConnectionID);
            
            @
mysql_data_seek($this->iQueryID, 0);
            $this->Row = 0;

            $this->Error("SetPosition($iPosition) failed: recordset has only " . $this->NumRows() . " rows");                
            return 0;
        }

        return 1;
    }

    
    /**
    * @return String Fieldvalue
    * @param $sFieldName String
    * @desc Retrieve the value of a field
     */
    
    function Data($sFieldName)
    {

        if ($this->iQueryID)
        {

            return $this->aRecord[$sFieldName];
        }

        
        return 0;
    }

    
    /**
    * @return String [dd-mm-yyyy]
    * @param $sDate [yyyy-mm-dd] String
    * @desc Converts MySQL date to dd-mm-yyyy date and vice versa.    
     */

    function ConvertDate($sDate)
    {

        $aNormal = explode("-",$sDate);

        $bStat = is_array($aNormal);
        if ($bStat)
        {

            return $aNormal[2] . "-" . $aNormal[1] . "-" . $aNormal[0];
        }

        
        return 0;
    }

    
    /**
    * @return Integer [Number of rows]
    * @desc Number of rows in current recordset.
     */

    function NumRows()
    {

        if ($this->iQueryID)
        {

            return @mysql_num_rows($this->iQueryID);
        }

        
        return 0;
    }

    
    /**
    * @return Integer
    * @desc Retrieve last inserted ID, only use after insert-query.
     */

    function LastInsertedID()
    {

        if ($this->iQueryID)
        {

            return @mysql_insert_id($this->iConnectionID);
        }

        
        return 0;
    }
    
    
    /**
    * @return Boolean
    * @param $sTable String
    * @param $sMode String
    * @desc Lock a table.
     */

    function Lock($sTable, $sMode = 'Write')
    {

        if ($this->iConnectionID <> 0)
        {

            $sQuery = "LOCK TABLE " . "$sTable $sMode";
            
            $bResult = @mysql_query($sQuery, $this->iConnectionID);
            
            if (!$bResult)
            {
        
                $this->iErrorNr = @mysql_errno($this->iConnectionID);
                $this->sError = @mysql_error($this->iConnectionID);
                $this->Error("Lock($sTable, $sMode) failed.");
                return 0;
            }

        
            return $bResult;
        }

        else
        {
            $this->Error("Lock($sTable, $sMode) called, while there's no connection.");
            return 0;
        }    
    }

    
    /**
    * @return Boolean
    * @desc Unlock all tables.
     */

    function Unlock()
    {

        if ($this->iConnectionID <> 0)
        {

            $bResult = @mysql_query("UNLOCK TABLES", $this->iConnectionID);
            if (!$bResult)
            {

                $this->iErrorNr = @mysql_errno($this->iConnectionID);
                $this->sError = @mysql_error($this->iConnectionID);
                $this->Error("Unlock() failed.");
                return 0;
            }

            return $bResult;
        }

        else
        {
            $this->Error("Unlock() called, while there's no connection.");
            return 0;
        }        
    }
    
    
    /**
    * @return void
    * @desc Toggle MySQL-Error debugging.    
     */

    function Debug($bDebug)
    {

        $this->bDebug = $bDebug;    
    }

    
    /**
    * @return void
    * @param $sMsg String
    * @param $Line Line parameter
    * @param $File File parameter
    * @desc Error handler.    
     */

    function Error($sMsg, $Line = '', $File = '')
    {

        if ($this->iConnectionID <> 0)
        {

            $this->Unlock();    // In case there are tables locked.
        }
        
        print "[Database error]<br><br>";        
        if ($File) { print "File: " . $File . "<br>"; }
        if ($Line) { print "Line: " . $Line . "<br><br>"; }
        print $sMsg . "<br><br>";
                
        if ($this->iErrorNr != "0" && $this->sError != "()" && $this->bDebug == True)
        {

            print "<hr><br>";
            printf ("<b>MySQL Error</b>: %s (%s)<br>\n",$this->iErrorNr,$this->sError);
        }        
    }
}

?>


19 jaar geleden
 
0 +1 -0 -1
@Mitch (a.k.a SH4D3H)

Met jou klasse maak je dus iedere keer opnieuw connectie voor een nieuwe query. Dat lijkt me niet de bedoeling :o
Winston Smith
Winston Smith
19 jaar geleden
 
0 +1 -0 -1
Kan ook hoor. Als je niet zoveel queries uitvoert zal dat sneller zijn dan een permanente connectie openhouden.
Johan
johan
18 jaar geleden
 
0 +1 -0 -1
Ik gebruik een script onder php en ik denk dat ik door de var een blanke pagina krijg als resultaat. hier het script. kan iemand mij helpen hoe ik de var duidelijk moet maken in php5. alvast bedankt.

Edite.

Sorry voor het ongemaak. script is verwijder
Winston Smith
Winston Smith
18 jaar geleden
 
0 +1 -0 -1
Je had - op zich - niet heel je script hier neer hoeven te zetten! Om het overzicht te bewaren verzoek ik je dan ook dit weer te verwijderen, en gewoon je vraag te stellen.

Om die alvast te beantwoorden: je gebruikt in PHP5 geen var meer, maar public, private of protected variabelen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php var $sHost; ?>
wordt bijvoorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php public $host; ?>


Lees verder op PHP.net
Johan
johan
18 jaar geleden
 
0 +1 -0 -1
Maar helaas heb ik steets een witte leege pagina als ik het script via mijn browser oproep.

heb jij een Idee aan wat dit zou kunnen liggen.

alvast bedankt.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Winston Smith
Winston Smith
18 jaar geleden
 
0 +1 -0 -1
Mja, misschien is je script nog helemaal ingesteld op PHP4 en draait je server PHP5. Je zal waarschijnlijk vrij veel in je script moeten aanpassen om het te laten werken.

Een andere (waarschijnlijkere) oorzaak waarom je een lege pagina krijgt is dat je wel een complete klasse hebt, maar er nog geen object van hebt gemaakt. Bovenaan je script staat zoiets als:
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
<?php
class klasse {
public $sHost;
public $sPass;
    
    function
__construct() {}

    private function functieEen() {}

    private function functieTwee() {}

    public function functieDrie() {}
}

?>


Dat is alleen de klasse. Je kan een object maken door een nieuwe variabele aan te maken met de klassenaam. Vervolgens kan je members (functies binnen de klasse) aanroepen, op deze wijze:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$obj
= new klasse();
$obj->functieDrie();
?>


Het bovenstaande voorbeeld zal uiteraard weinig doen, maar zo wordt het wellicht wat duidelijker. Let er trouwens op dat je alleen public variabelen en members kan aanspreken; private is alleen voor gebruik binnen de klasse zelf. Je hebt ook nog protected, maar die heb je waarschijnlijk helemaal niet nodig (die is om andere afhankelijke klassen toegang te geven tot variabelen en members)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Wat is object georienteerd programmeren?
  2. Lekker zelf programmeren :P
  3. conclusie

Labels

  • Geen tags toegevoegd.

PHP tutorial opties

 
 

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.