php кратчайший вариант вызова класса - PullRequest
0 голосов
/ 14 июля 2020

Я видел много способов, которые вы можете использовать для вызова класса внутри другого в 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();

, но есть ли способ, которым я могу вызвать класс вида внутри контроллера, например,

View('something)

Я хочу сделать его самой короткой версией, если это невозможно, или мне нужно внести изменения в компилятор, просто дайте мне самую короткую версию

спасибо всем

1 Ответ

1 голос
/ 14 июля 2020

Конечно, вы можете сделать это в PHP. Взгляните на методы magi c, особенно __invoke ()

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

Вы можете просто вызвать его, выполнив

$view = new View();
$view('my template');
...