Oproepen variable in functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sofian B

Sofian B

27/10/2012 22:04:04
Quote Anchor link
Beste php leden,

Dit is mss een simple vraag maar dit wil mij niet lukken. Ik heb een php file van Jwplayer met code die is opgebouwd uit classes en functions. Nu probeer ik enkele variables op te roepen door gebruik te maken van include. Hoe kan ik een variable in een functie oproepen om te gebruiken in een ander php bestand?

Vb van hoe de code is opgebouwd:
https://svn.wikia-code.com/wikia/trunk/extensions/wikia/JWPlayer/JWPlayer.class.php

Alvast bedankt.
 
PHP hulp

PHP hulp

17/11/2024 23:48:30
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 22:24:29
Quote Anchor link
Sofian, je zult je iets moeten verdiepen in de werking van classes of wel "Object oriented programming" kortweg OOP.

De variabelen in de class staan protected hetgeen wil zeggen dat je er niet rechtstreeks bij kunt. Je kunt of een nieuwe class maken die class JWPlayer gaat uitbreiden met het keyword extend of je zult gebruik moeten maken van de bestaande functies die bij die class aangeleverd zijn. Ik zal je een klein voorbeeld geven van een eigen class die alles van class JWPlayer overerft:

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
<?php
include 'JWPlayer.php';

// deze class erft alles van de class JWPlayer
class myclass extends JWPlayer {

    // dit wordt dan dus een extra functie van de class JWPlayer
    public function initialize() {
        
        // met this verwijs je naar de eigen class. $title is een protected class variabele
        //    van de class JWPlayer die we nu een andere waarde gaan geven.

        $this->title = 'mijn eigen titel';
    }

};


// om een class te gebuiken moeten we eerst een instantie er van in het geheugen laden
$player = new myclass();
// we roepen onze eigen gemaakte functie nu aan. deze functie is nu een uitbreiding op het geheel
$player->initialize();

?>
Gewijzigd op 27/10/2012 22:32:01 door Frank Nietbelangrijk
 
Sofian B

Sofian B

27/10/2012 23:22:03
Quote Anchor link
Frank, bedankt voor de uitleg. Dat maakt een en ander al veel duidelijker. Ik vrees toch dat ik mij wat meer moet verdiepen in php om dit beter te kunnen verstaan. Ik dacht dat het oproepen van functies in classes te vergelijken was met C++. In mijn php file zie ik dat er niet gebruik wordt gemaakt van public of protected maar gewoon function. Wat is het verschil tussen public function en function? Is er geen simpelere manier te bedenken om deze variables te kunnen oproepen?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 23:29:30
Quote Anchor link
een 'function' binnen een class is hetzelfde als een 'public function'. Het werken met classes is zeker te vergelijken met c++ maar er zijn wel syntax verschillen.

c++:

class {
public:
function dosomething() {}
protected:
function dosomethingelse() {}
}:

PHP:

class {
public function dosomething() {}
protected function dosomething() {}
};
 
Wouter J

Wouter J

27/10/2012 23:31:21
Quote Anchor link
Sofian, public function en function zijn het zelfde. function is alleen een oude methode om een method aan te duiden, sindsdien hebben we visibility keywords erbij gekregen (public, protected en private). Aangezien je C++ kent ken je deze begrippen waarschijnlijk ook wel.

De properties, variabele, van een klasse zijn in jou geval allemaal protected. Dat betekend dat je ze niet vanuit de buitenkant kan benaderen, maar wel vanuit een extended klasse. Je zult dus de klasse moeten extenden en een speciale getter maken. Dat is in elk geval wat ik uit je vraag opmaak.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/10/2012 23:33:33
Quote Anchor link
je kunt het JWPlayer script aanpassen maar ik moet je dat toch sterk afraden om twee redenen.

- er kunnen bugs ontstaan
- als er een update voor JWPlayer komt dan moet je weer in dat bestand gaan knoeien en maak je weer
kans op bugs
 
Wouter J

Wouter J

28/10/2012 00:12:55
Quote Anchor link
Frank, ik zou hem gewoon extenden en er een getter bij plakken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
class MyPlayer extends JWPlayer
{
    public function getFoo()
    {

        return $this->foo;
    }
}

?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/10/2012 00:20:33
Quote Anchor link
Ja ik ook wouter, ik had dat reeds voorgesteld en een voorbeeld gegeven
 
Wouter J

Wouter J

28/10/2012 00:28:19
Quote Anchor link
Frank, ah dan had ik jou code voorbeeld in de snelheid niet helemaal goed begrepen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/10/2012 00:31:51
Quote Anchor link
ja ik ken dat, geen probleem.
 
Sofian B

Sofian B

28/10/2012 00:33:39
Quote Anchor link
Quote:
De properties, variabele, van een klasse zijn in jou geval allemaal protected.
De code die ik gebruik is in een joomla website i.p.v de functions binnen deze class protected of public te zetten staan deze allemaal in functions. Maar er staat deze regel bij JEXEC. De code bevat bijna 900 regels en er is maar 1 function van deze class die ik nodig heb. Ben zelf nog wat aan het lezen want veel van dit is nog nieuw voor mij.

Quote:
Je zult dus de klasse moeten extenden en een speciale getter maken.
Dit is alleen wanneer de function protected is? Hoe werkt dit dan als je een public function wilt gebruiken?
Gewijzigd op 28/10/2012 00:34:33 door Sofian B
 
Wouter J

Wouter J

28/10/2012 00:41:25
Quote Anchor link
Sofian, er is geen funcite protected. Stel de JWPlayer heeft een protected variabele $foo. Protected betekend niet van de buitenkant bereikbaar, alleen vanuit de binnenkant of een child klasse.
Om de protected variabele toch buiten te kunnen krijgen maak je een speciale getter functie die als enige doel heeft de protected variabele waarbij je in de functie bij kunt naar buiten brengen, dat gebeurd er in het code voorbeeld dat ik gaf.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/10/2012 00:44:30
Quote Anchor link
Sofian deze kwam ik tegen over OOP: http://www.phptuts.nl/view/45/
 
Sofian B

Sofian B

28/10/2012 01:13:12
Quote Anchor link
@Wouter J Bedankt voor de uitleg en het voorbeeld. Frank heeft gelijk ik zal mij wat meer moeten verdiepen in deze materie alvorens ik jullie lastig val met mijn vragen.

Quote:
Sofian deze kwam ik tegen over OOP: http://www.phptuts.nl/view/45/
Bedankt, tutorials kan ik zeker gebruiken. Ik heb nu een week geen les en ik zou graag zoveel mogelijk willen bijleren. Ik ben aan het twijfelen of ik een een boek ga doornemen of een Youtube kanaal. Wat zouden jullie mij aanraden?
 
Wouter J

Wouter J

28/10/2012 09:51:02
Quote Anchor link
Quote:
Wat zouden jullie mij aanraden?

Een YouTube kanaal, grote kans dat ie meer up to date is. Ik zal wel kijken naar de datum, OO in PHP bestaat nog niet heel lang en als je tutorials van meer dan 4 jaar oud ziet zal ik hem niet doen.
 



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.