Closure probleem

  • Hallo allen,


    Ik wil d.m.v. de __call() methode een shortcut schrijven voor mijn HTML helper alleen krijg ik de volgende fout:


    Object of class Closure could not be converted to string in ...


    Alleen ik kan niet plaatsen wat ik nu fout doe gezien ik te weinig met Closures werk en ik er na 2,5 uur nog steeds niet uitkom. Zover mijn kennis loopt zou hij dit moeten doen maar schijn bedriegt... p.s. ik weet dat ik in de __call() methoden nog argumenten moet verwerken etc.


    Alvast bedankt,


    Michael


  • Guest, wil je besparen op je domeinnamen? (ad)
  • Daar gaat het niet fout ... wanneer ik het volgende uitvoer:


    PHP
    <?php
    $html = new HTML();
    $html->tag('foo', [] 'hello');
    ?>

    Krijg ik terug: <foo>Hello</foo>
    Dat werkt dus... (is ook een string)


    Maar wanneer ik dit vervolgens uitvoer in een anonymous function werkt het niet meer en krijg ik die error hierboven...


    http://php.net/manual/en/functions.anonymous.php


    Daarom vind ik het vreemd en is het ook niet te herleiden


    Opgelost call_user_func_array() ertussen en het werkt :P


    Zo simpel en niet aan gedacht evengoed bedankt Ferhat


    Edit:

  • Bij dit soort vraagstukken kan het handig zijn om (in het vervolg) de PHP-versie die je gebruikt te vermelden omdat bepaalde constructies simpelweg niet werken in/voor bepaalde versies.


    Zo had ik een tijd geleden het probleem dat ik geen statische methoden kon aanroepen waarbij de klassenaam variabel was. Dit bleek niet ondersteund te worden voor PHP 5.3.0. Ook daar was call_user_func() de oplossing.


    Of een PHP upgrade lol.

  • Bij dit soort vraagstukken kan het handig zijn om (in het vervolg) de PHP-versie die je gebruikt te vermelden omdat bepaalde constructies simpelweg niet werken in/voor bepaalde versies.


    Zo had ik een tijd geleden het probleem dat ik geen statische methoden kon aanroepen waarbij de klassenaam variabel was. Dit bleek niet ondersteund te worden voor PHP 5.3.0. Ook daar was call_user_func() de oplossing.


    Of een PHP upgrade lol.

    Ik test mijn code in Travis CI dus in dit geval was dit niet van toepassing want ik test met PHP 5.4 tm 7 en HHVM

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!