Ik heb minequery.class.php en usage.php gedownload en hij werkt op onze test server (PHP Version 5.3.9), maar hij werkt niet op onze normale server (PHP Version 5.2.17).
Ik krijg deze error:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /classes/Minequery.php on line 45

Het gaat dus over de :: op de regel:
<?php
$response = $class::read($address, $port, $errno, $errstr, $timeout, $write, $latency);
?>


Ik heb geprobeerd de class te herschrijven op andere manieren maar dat lukte ook niet :I

Hebben jullie misschien ideeën om die class voor PHP Version 5.2.17 te laten werken?
Ik ben geen OO-guru, maar ik geloof dat je read()-methode static is?
Je probeert nu een statische methode op te roepen vanuit een bestaand object.

Ik weet niet of dat kan.
Even voor de duidelijkheid, die class is niet door mij geschreven, maar ik maak er wel gebruik van.

Roel PHP op 04/10/2012 11:18:33

Ik ben geen OO-guru, maar ik geloof dat je read()-methode static is?
Je probeert nu een statische methode op te roepen vanuit een bestaand object.

Ik weet niet of dat kan.


Hij geeft geen foutmelding op mijn test server, dat zou hij denk ik wel gedaan hebben als die niet static mag zijn.
En de foutmelding gaat over de :: die hij niet verwacht, waarschijnlijk heeft hij nog niet eens naar de functie gekeken.
Dat zou ik zo gauw niet zeggen. Met die :: roep je een static method aan in een bestaand object.
Roel PHP op 04/10/2012 11:25:15

Dat zou ik zo gauw niet zeggen. Met die :: roep je een static method aan in een bestaand object.


Gebruik je daar juist niet -> voor?

$class = new ClassName;
$class->functionName();
of
ClassName::functionName();

Nu weet ik het zelf ook niet meer zeker o_o XD
Met -> roep je een methode aan in een bestaand object.
Met :: roep je een statische methode aan.

Maar zoals ik al zei, het is misschien een punt om op te letten want zeker weten doe ik het niet - ik ben geen OO-guru. ;-)
Roel PHP op 04/10/2012 11:29:00

Met -> roep je een methode aan in een bestaand object.
Met :: roep je een statische methode aan.

Maar zoals ik al zei, het is misschien een punt om op te letten want zeker weten doe ik het niet - ik ben geen OO-guru. ;-)


Ben ik ook niet ^^
Ik probeer gewoon zo veel mogelijk XD

Maar ik heb ook geprobeert het naar -> te veranderen en ook de functie niet static te maken, beide helpt niks :S
Ricardo Vermeltfoort op 04/10/2012 11:27:40

...
Gebruik je daar juist niet -> voor?

$class = new ClassName;
$class->functionName();
of
ClassName::functionName();


Je mag uiteraard een variabele noemen zoals je wil, maar dit laat wel zien waar de verwarring zit.

Dat moet zijn:
$object = new ClassName;
$object->functionName();
of
ClassName::functionName();



Dus ...
- Ofwel heb je een statische functie, waarbij je enkel gebruik maakt van een class, maar niet via een object:
ClassName::functionName();

- Ofwel heb je functies waarbij een object (= instantie van een class) centraal staat, en waarbij de functie gebruik kan maken van de $this-> variabelen (= eigenschappen) van dat object:
$object->functionName();


In het eerste geval heb je geen object, en dus ook geen $this.
Kris Peeters op 04/10/2012 12:43:48

[quote="Ricardo Vermeltfoort op 04/10/2012 11:27:40"]
...
Gebruik je daar juist niet -> voor?

$class = new ClassName;
$class->functionName();
of
ClassName::functionName();


Je mag uiteraard een variabele noemen zoals je wil, maar dit laat wel zien waar de verwarring zit.

Dat moet zijn:
$object = new ClassName;
$object->functionName();
of
ClassName::functionName();



Dus ...
- Ofwel heb je een statische functie, waarbij je enkel gebruik maakt van een class, maar niet via een object:
ClassName::functionName();

- Ofwel heb je functies waarbij een object (= instantie van een class) centraal staat, en waarbij de functie gebruik kan maken van de $this-> variabelen (= eigenschappen) van dat object:
$object->functionName();


In het eerste geval heb je geen object, en dus ook geen $this.

[/quote]

ahh dat verduidelijkt het wel een beetje ^^
Heb je ook een ideetje wat ik aan die class zou moeten veranderen om hem bij de oudere PHP versie te laten werken? (zie eerste post)
Die class bevat enkel statische functies.

Dus je moet overal werken met
Minequery::functienaam()


En je moet nergens
$object = new Minequery()
gebruiken.
Kris Peeters op 04/10/2012 12:59:46

Die class bevat enkel statische functies.

Dus je moet overal werken met
Minequery::functienaam()


En je moet nergens
$object = new Minequery()
gebruiken.



Dat was het probleem niet, download de 2 bestanden van de eerste post en probeer ze op een server met PHP 5.3.* en op een server met PHP 5.2.*, het probleem is dat hij niet werkt op mijn normale server (PHP 5.2.*) maar wel op mijn test server (PHP 5.3.*). :(

Mijn vraag is of daar een oplossing voor is want wat ik al heb geprobeerd werkte niet. (upgraden van de PHP versie is hellaas niet mogelijk)

Reageren