提问者:小点点

调用类的php最短版本


我在PHP中看到了很多可以用来在另一个类中调用类的方法,我想知道您对调用类的最短版本的看法。

假设我们有一个类名视图和另一个类名控制器

class View 
{

private $data = array();

private $render = FALSE;

public function __construct($template , $datas = null)
{

    try {
        $file = strtolower($template) . '.php';

        if (file_exists($file)) {
            if($datas > 0) {
                foreach($datas as $data) {
                    array_push($this->data, $data);
                }
            }
            $this->render = $file;
        } else {
            die('Template ' . $template . ' not found!');
        }
    }
    catch (customException $e) {
        echo $e->errorMessage();
    }
}

public function __destruct()
{
    extract($this->data);
    include($this->render);

}
}

require_once "system/autoload.php";

class Controller {

function index() {
   $view = new View('something');
}

我知道我可以用

 $view = new View('something');

或者使用OOP和扩展,从控制器内部的视图调用函数

$this->viewFunction();

但是我有没有办法像这样在controller内部调用view类

View('something)

我想使它最短的版本可能,如果它是不可能的,或者我必须在编译器内作出改变,好,只是给我最短的版本

谢谢大家


共1个答案

匿名用户

您肯定可以在PHP中实现这一点。 看看神奇的方法,特别是__invoke()

class View
{
    public function __invoke(string $template)
    {
        return $template;
    }
}

您可以简单地通过执行view('mytemplate');来调用它