php的CI框架如何实现异步调用?
如题。php的CI框架如何实现异步调用?在一个方法里调用另一个控制器或模型的方法,还能继续往下执行。...
如题。php的CI框架如何实现异步调用?在一个方法里调用另一个控制器或模型的方法,还能继续往下执行。
展开
展开全部
我觉得楼主的程序架构可能存在有一定的问题。
在mvc中,c这一层并不提倡被复用。m这一层并不做逻辑判断的事情。这样一来,楼主想在不同controller里使用相同的逻辑判断,比如登陆。这时你可以采用ci里的library来做……至少我认为这样挺不错的!
如果你曾经在某个框架里看到不同controller相互调用,你可以认为那是一种弱设计,我本人并不提倡这样做。至少目前你说的登陆逻辑,可以抽象出一个login_library.php来处理。
还有,如果你每个控制器都会用到的方法,你可以考虑把这些方法放到一个基类里面去 比如ci的 MY_Controller 扩展基类
在mvc中,c这一层并不提倡被复用。m这一层并不做逻辑判断的事情。这样一来,楼主想在不同controller里使用相同的逻辑判断,比如登陆。这时你可以采用ci里的library来做……至少我认为这样挺不错的!
如果你曾经在某个框架里看到不同controller相互调用,你可以认为那是一种弱设计,我本人并不提倡这样做。至少目前你说的登陆逻辑,可以抽象出一个login_library.php来处理。
还有,如果你每个控制器都会用到的方法,你可以考虑把这些方法放到一个基类里面去 比如ci的 MY_Controller 扩展基类
更多追问追答
追问
有实例吗?library是什么?怎么来用?
追答
展开全部
在你自定义的类库中初始化CodeIgniter资源
要你自定义的类库中访问CodeIgniter的原始资源,你必须使用 get_instance() 函数.这个函数返回一个CodeIgniter super object.
一般来说在你的控制器函数中你可以通过 $this 调用任何可用的CodeIgniter函数:
$this->load->helper('url');
$this->load->library('session');
$this->config->item('base_url');
//etc.
$this, 只直接作用在你自己的控制器,模型和视图中.当你在自定义类中想使用CodeIgniter原始类时,你可以这样做:
首先,定义CodeIgniter对象赋给一个变量:
$CI =& get_instance();
一旦定义某个对象为一个变量,你就可以使用那个变量名 取代 $this:
$CI =& get_instance();
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
//etc.
注意: 你将注意到get_instance()这个函数通过被引用的方式被传递:
$CI =& get_instance();
这十分重要. 通过引用的方式赋给变量将使用原始的 CodeIgniter 对象,而不是创建一个副本。
//------------------------------------------------------------------------------------------------//
我想这也许是你需要的.$CI =& get_instance();之后再用$CI->load->library('session');等方法加载你需要的
要你自定义的类库中访问CodeIgniter的原始资源,你必须使用 get_instance() 函数.这个函数返回一个CodeIgniter super object.
一般来说在你的控制器函数中你可以通过 $this 调用任何可用的CodeIgniter函数:
$this->load->helper('url');
$this->load->library('session');
$this->config->item('base_url');
//etc.
$this, 只直接作用在你自己的控制器,模型和视图中.当你在自定义类中想使用CodeIgniter原始类时,你可以这样做:
首先,定义CodeIgniter对象赋给一个变量:
$CI =& get_instance();
一旦定义某个对象为一个变量,你就可以使用那个变量名 取代 $this:
$CI =& get_instance();
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
//etc.
注意: 你将注意到get_instance()这个函数通过被引用的方式被传递:
$CI =& get_instance();
这十分重要. 通过引用的方式赋给变量将使用原始的 CodeIgniter 对象,而不是创建一个副本。
//------------------------------------------------------------------------------------------------//
我想这也许是你需要的.$CI =& get_instance();之后再用$CI->load->library('session');等方法加载你需要的
追问
你大概理解错了我需要的东西。在第一个控制器的一个方法里,传递参数,去调用第二个控制器里的方法。同时不影响第一个控制器这个方法的向下执行。这个要怎么做呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询