[PHP OO] functie uitvoer door printf, werkt niet?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een functie binnen een class die als invoer een int moet hebben.

er worden wat berekeningen gedaan met de int en de uitkomst is dan:

printf("%02d beschrijving1 %02d beschrijving2", $uitkomst1, %uikomst2);


Dan als ik het aan wil roepen:

$object->functienaam(23213);

dan geeft deze geen uitvoer. Hoe komt dit? Komt dit door de functie printf?
Het heeft in iedergeval iets met OO te maken want als deze functie niet in een class staat en niet aangeroepen hoeft te worden door een object dan werkt ie wel gewoon.

Deze topic hangt een beetje samen met: [rml][ PHP] 10 - 8 = 02[/rml] waarin staat dat de output in iedergeval twee digits moet hebben.

[ Voor 16% gewijzigd door Verwijderd op 05-01-2005 17:12 ]


Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
misschien door in de functie zelf

PHP:
1
return printf("%02d beschrijving1 %02d beschrijving2", $uitkomst1, %uikomst2);
te zetten en bij het aanroepen

PHP:
1
echo $object->functienaam(23213);


Werkt het zo wel?

[ Voor 6% gewijzigd door RAJH op 05-01-2005 17:20 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Er staat een typfout in om maar even te beginnen (uikomst ipv uiTkomst)

printf("%02d beschrijving1 %02d beschrijving2", $uitkomst1, %uikomst2);

Ik weet niet wat dit geweest is maar de procenten doen iig een beetje vreemd aan, ziet er iig niet uit als PHP.

Het kan zijn dat je daar variabelen gebruikt die niet in de functie zijn aangemaakt maar erbuiten. Dan moet je het volgende bovenaan in de functie zetten:

global $uitkomst2;

Ik kan niet precies nagaan of dit het geval is omdat ik niet de preciese code heb, maar controleer dat iig even.

@Ro:

Op die manier echo je de output van de functie (wat met return teruggegeven wordt). Binnen een functie kan je wel iets echo'en (ook met printf), maar da's geen output van de functie.

[ Voor 16% gewijzigd door Verwijderd op 05-01-2005 17:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OOPS het was volgens mij een vergeten ';' wat de debugger niet aan gaf :( , misschien was het ook iets anders, maar in iedergeval iets verkeerd aangeroepen.

Een vergeten ';' lijkt mij wel vreemd, maar ik heb heb even in 1 keer wat dingen veranderd en oa ook met return. En nu opeens werkt het wel.
Zoiets heeft veel tijd gekost en dan hoop je altijd maar ter nuawer nood dat GoT het antwoord heeft

Sorry voor de vervuiling 8)7

[ Voor 41% gewijzigd door Verwijderd op 05-01-2005 17:22 ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Hoe ziet jouw klasse er uit? Gebruik je PHP4 of PHP5?

Ik heb even een testje gedaan in PHP5.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

class Foo {

  private $bla;

  function __construct() {
    $this->bla = 5;
  }

  function test($int) {
    $inttest = $int * $this->bla;
    printf("%02d beschrijving1 %02d beschrijving2", $int, $inttest);
  }

}

$foo = new Foo();
$foo->test(23213);

?>

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Een gemiste ';' zou de PHP parser wel opmoeten vallen tenzij je de PHP error's uit hebt staan. Deze kun je instellen in je php.ini (het gedeelte Error handling and logging), of met behulp van error_reporting().

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Ro schreef op woensdag 05 januari 2005 @ 17:19:
misschien door in de functie zelf

PHP:
1
return printf("%02d beschrijving1 %02d beschrijving2", $uitkomst1, %uikomst2);
te zetten en bij het aanroepen

PHP:
1
echo $object->functienaam(23213);


Werkt het zo wel?
nee, je moet dan sprintf gebruiken :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mijn klasse heeft meer weg van:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

class Foo {

  var $bla = 5;

  function test($int) {
    $inttest = $int * $this->bla;
    printf("%02d beschrijving1 %02d beschrijving2", $int, $inttest);
  }

}

$foo = new Foo();
$foo->test(23213);

?>


Dat is php4, en wat jij hebt is php5?
Dan is mijn vraag wat ik hierboven hebt gaat straks als alles en iedereen over is op php5 toch dan nog wel werken?
Ik moet de verschillen nog gaan uitzoeken maar als je het weet ben ik heel blij met ja of nee :)


EDIT:

ik heb zelf het antwoord gevonden door de php debugger op php5 in te stellen, ik krijg dan:

Debug Strict (PHP 5): PHPDocument2 line 5 - var: Deprecated. Please use the public/private/protected modifiers.

Dus het gaat wel werken maar hij heeft liever dat je stricter bent met die variablen.

[ Voor 30% gewijzigd door Verwijderd op 05-01-2005 17:38 ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Wat ik type is PHP5. De meeste PHP4 OOP scripts zijn backwardcompatible met PHP5. PHP5 is meer gericht op OOP dan PHP4. Wat je er allemaal mee kunt en wat de verschillen zijn heb ik nog wel wat leesvoer voor je:
PHP Manual over PHP5
Meer met PHP5
Design Patterns toepassen in PHP
PHP Volcano over PHP5
SitePoint Forums
Exception handling in PHP4 en PHP5

Dit zijn er zo een paar website's waar je veel informatie kunt vinden. Ook op de site van PHP zelf staat een berg aan informatie, soms is het even zoeken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sybr_E-N schreef op woensdag 05 januari 2005 @ 17:42:
Wat ik type is PHP5. De meeste PHP4 OOP scripts zijn backwardcompatible met PHP5. PHP5 is meer gericht op OOP dan PHP4. Wat je er allemaal mee kunt en wat de verschillen zijn heb ik nog wel wat leesvoer voor je:
PHP Manual over PHP5
Meer met PHP5
Design Patterns toepassen in PHP
PHP Volcano over PHP5
SitePoint Forums
Exception handling in PHP4 en PHP5

Dit zijn er zo een paar website's waar je veel informatie kunt vinden. Ook op de site van PHP zelf staat een berg aan informatie, soms is het even zoeken.
Mijn dank is groot! Ik heb snel wat urls gecheckt en het ziet er heel overzichtelijk uit.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Versie 5 is er al, maar wanneer gaan webhosters op deze evrsie over? welke factoren zijn daar bepalend voor? Zodat ik in een inschatting kan maken wanneer ik moet werken aan een php5 versie (terwijl de php4 versie nog niet eens af is).

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op woensdag 05 januari 2005 @ 17:51:
Versie 5 is er al, maar wanneer gaan webhosters op deze evrsie over? welke factoren zijn daar bepalend voor? Zodat ik in een inschatting kan maken wanneer ik moet werken aan een php5 versie (terwijl de php4 versie nog niet eens af is).
Ik denk dat dat nog erg lang gaat duren, ik verwacht het de komende paar jaar nog niet iig en als ze wel php5 aanbieden dan zal dat toch naast php4 zijn :)

Acties:
  • 0 Henk 'm!

Verwijderd

Ik ben het met Erkens eens. Providers kijken liever eerst de kat uit de boom. Laat ze er maar eerst een paar grote fouten uithalen, beveiligingslekken etc, en dan pas zullen ze php5 volledig gaan ondersteunen. Je kan providers niet eens ongelijk geven toch?

[/offtopic]
Pagina: 1