Variable functions with namespaces in PHP

前端 未结 4 2231
孤街浪徒
孤街浪徒 2021-02-14 02:58

I\'m wondering if there is a way to call variable functions with namespaces. Basically I\'m trying to parse tags and send them to template functions so they can render html`

相关标签:
4条回答
  • 2021-02-14 03:34

    try with

     // Main php file
    require_once 'template.php';
    foreach (array("javascript","script","css") as $tag) {
        call_user_func("template\\$tag"); // As of PHP 5.3.0
    }
    
     // template.php
     namespace template;
    
     function javascript() { return "Hello from javascript"; }
     function css() { return "Hello from css"; }
     function script() { return "Hello from script"; }
    

    you have some info here

    0 讨论(0)
  • 2021-02-14 03:44

    Sure you can, but unfortunately, you need to use call_user_func() to achieve this:

    require_once 'template.php';
    foreach (array("javascript","script","css") as $tag) {
        echo call_user_func('template\\'.$tag);
    }
    

    Namespaces in PHP are fairly new. I'm sure that in the future, they will fix it so we won't require call_user_func() anymore.

    0 讨论(0)
  • 2021-02-14 03:51

    Try this

    $p = 'login';
    namespace App\login; 
    $test2 = '\App\\'.$p.'\\MyClass';
    
    $test = new $test2;
    
    0 讨论(0)
  • 2021-02-14 03:52

    This will also work, no need for call_user_func, just use the Variable functionsDocs feature:

    require_once 'template.php';
    
    $ns = 'template';
    foreach (array('javascript', 'script', 'css') as $tag) {
        $ns_func = $ns . '\\' . $tag;
        echo $ns_func();
    }
    
    0 讨论(0)
提交回复
热议问题