请教下类实例化调用问题。

下面我例出两个类a(假设a包含很多功能)、b(只是调用);

a 代码

namespace demo;

class a{
    public function index(){
        return '我是index';        
    }
    
    public function demo(){
        return '我是demo';        
    }
}

我常见别人这样调用:

use demo\a;

class b{
    static function Amode (){
        return new a;
    }
    
    public Bindex(){
        echo self::Amode()->index();
    }
    
    public Bdata(){
        echo self::Amode()->demo();
    }
    
}

上面这种方法比下面好使吗?

use demo\a;

class b{
    
    public Bindex(){
        $mode=new a();
        echo $mode->index();
    }
    
    public Bdata(){
         $mode=new a();
        echo $mode->demo();
    }
    
}

阅读 1.8k
3 个回答

本身两种办法我觉得差异不大,有更优解,可以了解下控制反转

区别就是a的数据是否共享:

self::Amode()->index() //能够保证用的是同一个a
$mode=new a(); //每次都生成一个新的a
echo $mode->index();

硬要说的话就是一定程度上保证在 class ba 的单例运行吧。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题