Oproepen variable in functie
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.
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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();
?>
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
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?
c++:
class {
public:
function dosomething() {}
protected:
function dosomethingelse() {}
}:
PHP:
class {
public function dosomething() {}
protected function dosomething() {}
};
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.
- 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
Ja ik ook wouter, ik had dat reeds voorgesteld en een voorbeeld gegeven
Frank, ah dan had ik jou code voorbeeld in de snelheid niet helemaal goed begrepen.
ja ik ken dat, geen probleem.
Quote:
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.De properties, variabele, van een klasse zijn in jou geval allemaal protected.
Quote:
Dit is alleen wanneer de function protected is? Hoe werkt dit dan als je een public function wilt gebruiken?Je zult dus de klasse moeten extenden en een speciale getter maken.
Gewijzigd op 28/10/2012 00:34:33 door Sofian B
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.
Quote:
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?Sofian deze kwam ik tegen over OOP: http://www.phptuts.nl/view/45/
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.