Hallo,

Ik zit met een probleempje.

Ik heb op internet een class gevonden voor UBB.

Die roep ik in de config aan met:

Class UBB{

Nu heb ik daaronder in een function de knoppen staan voor de ubb.

public function showUBB(){

Nu roep ik die aan met:

<?php

UBB::showUBB();

?>

Maar dan krijg ik deze error:

Fatal error: Using $this when not in object context

Wat doe ik niet goed?

Alvast bedankt.
Weet je hoe je de UBB class moet gebruiken? Eventuele handleiding erbij met de aanroepen en manier van gebruik?

Gebruik je ergens $this op een verkeerde manier? Aangezien dat je error is en je in het stukje code geen $this gebruikt.
Ik zie het al. De images werden zo opgeroepen.
Krijg nu geen foutmeldingen meer, maar de Knoppen worden niet zichtbaar.
Tis moeilijk troubleshooten met 1 regel code.

<?php
public function showUBB(){
$return = '<a onclick="addUBB(\'[b]\', \'[/b]\');" title="Vetgedrukt"><div class="ubbBox"><img src="/images/bold.png" /></div></a>';
return $return;
}
?>


En dit staat weer onder UBB{
Het is geen static function dus ik denk dat je de call UBB::showUBB niet kan maken. Zo te zien zal je eerst een instantie van de class moeten aanmaken en vervolgens via dat object de functie aanroepen.
Je weet dat er aan het aan het einde van de link een div staat? wordt nu je link niet buiten de div geplaatst i.p.v. erin?

En heb je de #ubbBox wel in je css sheet staan (en opgemaakt)?
Erwin H op 07/05/2012 12:36:17

Het is geen static function dus ik denk dat je de call UBB::showUBB niet kan maken. Zo te zien zal je eerst een instantie van de class moeten aanmaken en vervolgens via dat object de functie aanroepen.


hoe bedoel je?

[size=xsmall]Toevoeging op 07/05/2012 13:06:19:[/size]

Chris NVT op 07/05/2012 12:53:47

Je weet dat er aan het aan het einde van de link een div staat? wordt nu je link niet buiten de div geplaatst i.p.v. erin?

En heb je de #ubbBox wel in je css sheet staan (en opgemaakt)?


nee er is helemaal niks zichtbaar
@Kevin:

Als je dus een div laat afdrukken (je knoppen) en je 'styled' die div niet in je css sheet, hoe moet hij dan iets laten zien?

een-op-een code overnemen werkt meestal niet goed, aangezien er altijd wel wat aangepast moet worden.

voeg dit eens toe in je css sheet

#ubbBox {
border: solid 1px #000;
}


Als het goed is moet er nu een zwarte lijn omheen komen te staan.
Kevin Blokzijl op 07/05/2012 13:06:07

[quote="Erwin H op 07/05/2012 12:36:17"]
... eerst een instantie van de class moeten aanmaken en vervolgens via dat object de functie aanroepen.

hoe bedoel je?
...
[/quote]


OOP: object georiƫnteerd programmeren.
Je gaat programmeren vanuit het standpunt van het object waarmee je bezig bent.

bv. (niet object georiƫnteerd)
$resultaat = berekenVersnelling($a, 100);

Vergelijk dit met
$a->versnelMet(100);

Je bekijkt (in het tweede geval) de wereld vanuit het standpunt van object $a.
Je moet eerst dit principe omarmen.
leesvoer:
http://www.phphulp.nl/php/tutorial/overig/object-georinteerd-denken/632/
Toevoeging op wat Kris zegt.

Als je een object hebt met daarin methodes gedeclareerd dan kan je die op de volgende manier aanroepen:
<?php
class UBB{
public function showUBB(){
return 'iets';
}
}

$ubbObj = new UBB;
echo $ubbObj->showUBB();
?>

De syntax die jij wilt gebruiken (UBB::showUBB()) kan alleen als de methode showUBB als static is gedeclareerd in de class UBB. Je klasse definitie zou dan dus zo moeten zijn:
<?php
class UBB{
public static function showUBB(){
return 'iets';
}
}
?>
Als dit volkomen nieuw voor je is dan is het verstandig om eens wat te gaan lezen over OOP, classes en objecten.

Reageren