Comment implémenter des façades simples en php ?
阿神
阿神 2017-06-21 10:10:55
0
1
792
<?php

# model.php

namespace Model\TestModel;

class User
{
    public function get()
    {
        return '爱因斯坦';
    }
}

<?php

# run.php

use Model\TestModel\User;

require __DIR__ . '/model.php';

$user = new User();
echo $user->get();

Je souhaite implémenter le même usage que Laravel Facades, load.phpComment l'écrire ?

<?php

# run.php

require __DIR__ . '/load.php';

echo \User::get();
阿神
阿神

闭关修行中......

répondre à tous(1)
扔个三星炸死你

Vous devez implémenter vous-même un objet Facade pour proxyer tous les appels de méthode vers l'objet réel.

class UserFacade
{
    private $user;

    public function __constructor()
    {
        $this->user = new User();
    }

    public function __callStatic($name, $arguments)
    {
        return call_user_func_array(array($this, $name), $arguments);
    }
}
$user UserFacade::get();

Tout appel de méthode statique à UserFacade sera transmis par proxy à User. __callStatic在有静态调用的时候触发,传入的参数$name是UserFacade::getLe nom de la méthode pour les appels statiques, $arguments est le tableau de paramètres.

Description officielle de Laravel Facade est un appel de classe concis et facile à retenir Laravel fournit essentiellement la classe Facade pour ses fonctionnalités. Au niveau du développement commercial, je ne recommande pas la méthode de conception d'appel de classe statique. J'ouvrirai un article séparé pour en discuter.

Référence

  • https://laravel.com/docs/5.4/…

  • http://php.net/manual/en/lang...

  • http://php.net/manual/en/func...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal