2 Star 0 Fork 0

狂奔的蜗牛. / soter-docs

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
plugin.html 3.63 KB
一键复制 编辑 原始数据 按行查看 历史
arraykeys 提交于 2017-07-19 11:41 . No commit message
<!DOCTYPE html>
<html>
<head>
<title>插件模式</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="js/inc.js"></script>
</head>
<body>
<fieldset>
<legend>插件模式</legend>
<ol>
<li><h2 class="title_h2">概念</h2>
  插件模式是相对Web模式而言的,通常Web模式我们都是从框架入口文件开始访问运行我们的项目,
<br>顺序是路由器路由到具体的控制器,然后加载执行控制器的方法。
<br>  插件模式就是可以把框架嵌入到任何现有的程序代码到中,然后按着Soter框架的各种特性写代码,
<br>插件模式和正常模式唯一不同的就是插件模式下Soter的路由功能不再使用,其它特性完全保留。
<br>  插件模式下路由器不在起作用,那么加载执行控制器的方法由我们自己的业务逻辑决定。
<br>  Soter支持插件模式运行,只要我们在入口文件最上面定义一个宏SOTER_RUN_MODE_PLUGIN为true即可,
<br>即:<code>define('SOTER_RUN_MODE_PLUGIN', TRUE);</code>
</li>
<li><h2 class="title_h2">手动加载</h2>
插件模式下路由器不在起作用,我们可以通过Sr::factory()方法加载各种资源,比如控制器方法。
<br>下面对它进行介绍:
<h3 class="title_h3">1.首先我们看它的参数</h3>
<pre class="brush:php">
Sr::factory($className, $hmvcModuleName = null)
</pre>
我们看到有两个参数:
<br>$className:    可以是完整的控制器类名,模型类名,类库类名
<br>$hmvcModuleName:  hmvc模块名称,是入口文件配置里面的数组的键名,插件模式下才会用到这个参数
<br><b>该方法而且支持传递参数给构造方法,详细内容可以看下面2.4的介绍.</b>
<h3 class="title_h3">2.加载示例</h3>
2.1.比如加载控制器:application/classes/Controller/Welcome.php
<pre class="brush:php">
$welcome=Sr::factory('Controller_Welcome');
//手动调用do_index方法,这里应该是按着我们具体的业务逻辑手动调用我们需要调用的方法。
$welcome->do_index();
</pre>
2.2.比如加载hmvc模块控制器:application/hmvc/demo/classes/Controller/Welcome.php
<br>而且入口文件里面注册了hvmc模块demo,<code>Demo=>demo</code>
<pre class="brush:php">
$welcome=Sr::factory('Controller_Welcome','Demo');
$welcome->do_index();
</pre>
2.3.比如加载模型:application/classes/Model/User.php
<pre class="brush:php">
$userModel=Sr::factory('Model_User');
//手动调用do_index方法,这里应该是按着我们具体的业务逻辑手动调用我们需要调用的方法。
$userModel->do_something();
</pre>
2.4.超级工厂方法Sr::factory($className, $hmvcModuleName = null)
<br>第三个参数开始的参数Soter会按着参数顺序传递给你要实例化的类的构造方法.
<br>比如:执行了Sr::factory('\Bean\User', null,669,'jack')
<br>同时User类如下:
<pre class="brush:php">
&lt;?php
namespace Bean;
class User{
private $id=0,$name='';
public function __construct($id,$name){
this.id=$id;
this.name=$name;
}
}
</pre>
那么669和jack就会作为$id和$name传递给User类的构造方法,如果要传递更多参数,
<br>在调用Sr::factory('\Bean\User', null,669,'jack')的时候,后面依次写上即可.
</li>
</ol>
</fieldset>
<script src="js/inc.foot.js"></script>
</body>
</html>
1
https://gitee.com/snail/soter-docs.git
git@gitee.com:snail/soter-docs.git
snail
soter-docs
soter-docs
master

搜索帮助