recherche

Maison  >  Questions et réponses  >  le corps du texte

PHP sur l'utilisation de nouveaux

// 项目使用 `composer`
// 重新封装了 redis
use cache\Redis;

// 因为封装了几种缓存方式 如:file,memcache
// 所以想要这种 字符串 的方式来 new 类
// 但是这个方式直接报错,没有重名问题
$class = 'Redis';
$instance = new $class($options);

// 如果直接 new,就没有问题,可以正常运行
$instance = new Redis($options);

La première erreur est comme ça PHP Fatal error: Class 'Redis' not found.

Si je n'utilise pas le chargement automatique de l'espace de noms et que j'utilise include file, il n'y a aucun problème avec la première et la deuxième méthodes.

Quel est le principe et comment le résoudre ? Merci.

typechotypecho2791 Il y a quelques jours829

répondre à tous(3)je répondrai

  • 世界只因有你

    世界只因有你2017-06-29 10:10:15

    Lorsque vous utilisez un espace de noms et instanciez une variable comme nom de classe, 需要包含完整的命名空间 ajoutez l'espace de noms directement à l'endroit où il a été instancié

    
    $cls_name = 'Redis';
    $class = "\cache\Redis\".$cls_name;
    $instance = new $class($options);

    répondre
    0
  • 高洛峰

    高洛峰2017-06-29 10:10:15

    Nécessite un espace de noms complet

    use cache\Redis;
    
    $class = Redis::class;//需要完整的命名空间
    $instance = new $class($options);
    

    OU

    
    $class = '\cache\Redis';
    //$class = \cache\Redis::class;
    $instance = new $class($options);
    

    répondre
    0
  • 三叔

    三叔2017-06-29 10:10:15

    C'est résolu, merci.

    répondre
    0
  • Annulerrépondre