Mojavi 3 手册/从 Mojavi 2 迁移
在尝试升级到 Mojavi3 之前,你应该对 Mojavi2 和 PHP5 有相当的了解。
如果你想快速了解 Mojavi 3,请参阅创建你的第一个模块。
在开始将应用程序从 Mojavi2 迁移到 Mojavi3 之前,请确保你使用的主机支持 PHP5。 你可以通过运行以下代码来确定你的主机是否支持 PHP5
phpinfo();
此外,你需要下载并安装 Mojavi3 软件包,可以通过访问以下位置获得。
可能 Mojavi3 最重要的新功能和强大之处在于 Context 对象。 一旦我弄清楚这东西的作用,我就爱上了它。 基本上,它是一种催化剂/存储对象,允许你访问
- 通过 getRequest() 获取 $request 对象
- 通过 getController() 获取 $controller 对象
- 通过 getUser() 获取 $user 对象
- 通过 getModuleName() 和 getActionName() 获取当前操作/模块名称
- 最后是当前模块的目录
或多或少,大多数暴露给用户/开发人员(你)的类将有一个 getContext() 函数,这将允许你访问此对象。 随着最近级联调用的加入,你可以执行在 php4 中无法执行的操作,例如
旧方法
$obj =& $request->getAttribute('myobj'); $anotherobj =& $obj->doSomethingSpecial(); $anotherobj -> execute();
新方法
$this->getContext()->getRequest()->getAttribute('myobj')->doSomethingSpecial()->execute();
好吧,这可能不是最好的例子,因为它太长了,但你明白我的意思,1 行 vs 3 行,在处理像复制它们而没有引用这样的大对象时,不会出现任何错误。
本节将继续更新…
Mojavi2 使用“渲染器”将一个模板系统的 API 翻译成一个通用的 API,以便开发人员可以轻松地将一个模板系统替换为另一个。 例如,Smarty 模板引擎使用 $smarty->assign() 允许你设置一个变量,而 patTemplate 另一个模板系统,使用 $pat->addVar()。 在 Mojavi 2 中,你将编写或使用现有的渲染器,然后调用它来显示你的输出。
注意:这通常通过过滤器完成,过滤器将创建渲染器对象,然后通过以下方式将其分配给你的 $request
$request->setAttribute('MyRenderer',$rendererObj))
Mojavi3 使用很大程度上相同的方法,但它不是从每个视图中的 $request 对象直接获取渲染器,而是简单地扩展 View 类。
例如
abstract class SmartyView extends View { ..... function __construct() { $this->engine = $this->getContext()->getRequest()->getAttribute('MySmartyObj'); }
, $value)
{ $this->engine->assign($name, $value); } ..... }
注意:使用
$this->engine = $this->getContext()->getRequest()->getAttribute('MySmartyObj');
只是一个我在视图中获取任何对象的最佳解决方案,你也可以很容易地执行以下操作
$this->engine = new Smarty();
Mojavi3 View 主要是抽象类,它提供了一套用于工作的函数框架,从而提供与 Mojavi2 中实现的统一 API(它是统一的,因为你被迫遵守 View 抽象类实现的命名约定)。
现在,你只需扩展 View,并对其进行初始化,而不是初始化你的渲染器对象(就像你在 Mojavi2 中一样)。 就像上面显示的那样
abstract class SmartyView extends View { ...
就是我们新的 View 的样子。 为了使这种新的 View 类型生效,我们在声明模块的视图时扩展它。 例如
class DoSomeActionSuccessView extends SmartyView { ... }
如你所见,这比在每个新的 View 中从 $request 中提取渲染器要流畅得多,它也减少了你必须复制和粘贴的代码,从而减少了维护的代码。 你可能还注意到 View 的命名方案不同,你不再将文件命名为 DoSomeActionView_success.class.php,而是将其命名为 DoSomeActionSuccessView.class.php,并相应地命名类(在 Mojavi2 中,我们只将视图类命名为 DoSomeActionView,在 Mojavi3 中,它将 DoSomeActionSuccessView 中的“Success”替换为你的应用程序状态)。
本节将继续更新…
Mojavi3 中的操作与 Mojavi2 中的操作非常类似,只是在一些增强和语义调整方面有所不同。 列出如下
- 在 Mojavi2 中返回 VIEW_SUCCESS 时,现在返回与你的应用程序状态对应的 View 类常量,即:View::Success 或 View::Error
- 在检查支持执行的视图类型(getRequestMethods)时,不再返回 REQ_POST 等,而是返回 Request::Post 等。
- getRequestMethods() 有一个新的返回类型,Request::All,它适用于所有请求方法。
- 所有操作扩展的根 Action 类现在有一个 getContext() 方法,它允许你访问上下文对象。
Mojavi3 配置默认使用 .ini 文件完成。 这种简单直接的配置使配置 mojavi 变得非常容易。 这些 ini 文件的基本语法如下
[SECTION] ; a comment..... ConfigKey = "%MO_APP_DIR%/my/config/value"
由于有些人可能不喜欢 ini 文件,因此 Mojavi3 的创建方式允许你编写自己的配置处理程序。 例如,如果你想使用 xml 文件来配置你的 mojavi,你可以编写一个配置处理程序,将其插入,然后开始使用你的自定义配置样式。
本节将继续更新…
要了解更多关于 PHP5 的信息,请访问:我可以去哪里了解更多?