第二章:Mojavi安装
1 Mojavi2.0不与php5相对应,必须使用php4。
2 mojavi的安装
mojavi可以从http://www.mojavi.org/的Downloads菜单下载。下载后安装在适合的路径下,此处以C:\apache\htdocs\mojavi\为例,访问路径是http://localhost/mojavi/。安装后直接访问会有错误提示「Fatal error: main(): Failed opening required '' ...」。
3 修改文件
安装好后对不需要的文件和安全性问题需要修改。首先,因为lib目录内的文件全在mojavi-all-classes.php中表述,所以可以将该文件夹删除。其次,安装好后用户端不应能访问的mojavi,webapp的文件能被访问,这是安全性问题,需要通过对文件构成进行修改来避免。按如下方式修改。
lib/删除。
opt/移入到mojavi目录下。
mojavi-all-class.php移入到mojavi目录下。
index.php移入到htdocs目录下。
修改结果:
项目目录/
htdocs/
index.php
mojavi/
opt/
mojavi-all-class.php
webapp/
config.php
lib/
modules/
templates/
修改后可访问根目录由项目目录改为htdocs。
4 设定
首先设定htdocs/index.php,12行到15行有INCLUDE config.php,config.php是最重要的设定文件,需要给出它的路径。因为config.php在webapp目录内,require_once()部分要这样写
require_once('../webapp/config.php');
index.php设定完毕。
然后是config.php的设定。由于PHP版本的不同,__FILE__内会发生错误,不能流畅运行,这种情况下的行数和正常时的行数是有差别的。这里使用的是正常时的行数。
首先16行到19行有「An absolute file-system path to the webapp directory.」,在这里设定路径,它应为以webapp为根目录的绝对路径。
define('BASE_DIR', dirname(__FILE__) . '/');
在因__FILE__而不能流畅运行的场合,要先定义项目路径,然后定义BASE_DIR
define('ROOT_DIR', 'C:/apache/htdocs/mojavi/');
define('BASE_DIR', ROOT_DIR . 'webapp/');
以上定义如果错误的话,将导致以后的设定出现问题。
接下来,29行到33行有「An absolute file-system path to the all-in-one class file php,mojavi,smarty,mvc uses.」。这里指定了Mojavi所有的类,由于Mojavi所有的类都归纳到mojavi-all-classes.php中,所以设定为mojavi-all-classes.php路径。
因为这里要用绝对路径指明,所以作如下替换
__FILE__可以使用的场合
define('MOJAVI_FILE', ROOT_DIR . '../mojavi/mojavi-all-classes.php');
__FILE__不可以使用的场合
define('MOJAVI_FILE', BASE_DIR . 'mojavi/mojavi-all-classes.php');
最后从35行到38行有「An absolute file-system path to the optional classes directory.」,在这里指定opt路径,使用绝对路径。
__FILE__可以使用的场合
define('OPT_DIR', ROOT_DIR . '../mojavi/opt/');
__FILE__不可以使用的场合
define('OPT_DIR', BASE_DIR . 'mojavi/opt/');
opt路径中安放了准备好的方便的功能类,此外,因为自己添加的类也要放到该路径中,要在文件头加上该路径。
到此设定完了。正常运行应显示Please configure your php,mojavi,smarty,mvc installation and remove this line from index.php.」。
5 第一个程序
config.php文件中79到84行有「The action to be executed when a request is made that does not specify a module and action.」,这里用来设定当默认执行文件不存在时所作的处理。
系统将首先寻找index.php,在index.php内找Default,然后寻找DefaultIndex,若无再寻找指定的目录,若再无出错误提示。
6 开发应用程序
在webapp/modules中有目录Default。webapp/modules中的目录名即项目名。Default程序中有四个目录,actions中放置活动类,config是设定文件,templates是模板,views放置显示文件。mojavi对文件名和类名有严格的命名规则。文件名为活动名+Action.class.php。如活动名为DefaultIndex,actions中的文件名为DefaultIndexAction.class.php。
代码如下
<?PHP
class DefaultIndexAction extends Action
{
function execute (&$controller, &$request, &$user)
{
$request->setAttribute('message', 'Hello World!');
return VIEW_SUCCESS;
}
}
?>
活动必须继承Action类,类名是活动名+Action。
控制器调用程序,执行execute方法,将被命名为message的文字“Hello World”传递给要求,然后views部分接受文字,最后返回的VIEW_SUCCESS是用来指定将文字转移到那个显示文件中。(在mojavi中,VIEW_SUCCESS被用success定义)。
7 开发显示文件
活动将success作为execute方法的返回值返回,控制器在相同的项目内查找与活动名和返回值相对应的显示文件。显示文件的命名规则:调用的活动名+View+_+活动返回值+class.php。在这里应为「DefaultIndex」+「View」+「_」+「success」+「.class.php」,要查找的显示文件的位置是「modules/Default/views/DefaultIndexView_success.class.php」。找到后调用显示类的execute方法。现在开发显示文件,MVC的V(View)。
<?PHP
class DefaultIndexView extends View
{
function & execute (&$controller, &$request, &$user)
{
$renderer =& new Renderer($controller, $request, $user);
$renderer->setTemplate('defaultindex.tpl');
$renderer->setAttribute('message', $request->getAttribute('message'));
return $renderer;
}
}
?>
同活动一样,显示文件必须继承View类。execute方法内用到的Renderer类,是用来产生输出画面的。Renderer类产生后,要求中的信息的值设置到Renderer中。然后,设置模板。最后返回Renderer。
8 开发模板
模板是页面设计的架构,Renderer读入模板,并在显示文件中对用特定格式纪录的部分用关联的数据替换。并且,在templates目录中做成defaultindex.tpl文件。模板没有固定的命名规则。
<div><?= $template['message'] ?></div>
在模板内部,$template['message']部分与显示文件中与Renderer相关联的值message替换。
9 完成
浏览器中输入地址http://localhost/mojavi/运行程序。
10 总结
控制器是在index.php内生成的,所以运行以上程序必须输入http://localhost/mojavi/。开始要求中没有与项目和活动相关的数据,控制器按config.php的设定寻找项目和活动。DefaultIndex活动中,将文字“Hello World!”命名为message传送给要求。然后控制器为调用显示文件而返回必要的信息。
顺利调用显示文件后首先生成Renderer。Renderer是将活动的结果合并到模板中并做成页面的对象。然后活动把要求中的信息设置到Renderer中,同时设置模板。最后将Renderer返回给控制器。
控制器是好东西,他几乎不需要编辑。
mojavi3 与php5相对应!
虽然,这是mojavi2的配置步骤,其它和mojavi3的配置非常的类似,但mojavi2和mojavi3之间还是有很多的不同的地方;只要认真地看它们的配置文件的信息,问题是不大的。
分享到:
相关推荐
Mojavi 是 PHP 的 MVC(模型-视图-控制器)框架。 主要目标是通过提供一组易于使用但功能强大的可扩展框架类来解决与 Web 应用程序开发相关的众多问题。
小程序商城源码,商城带有后台,功能齐全。可以二次开发,方便使用、 带后台系统的小程序商城源码,可以二次开发,方便使用。
propelAdmin是用NSIS(Nullsoft可脚本安装系统)编写的一组工具,用于处理Propel Accelerator的管理。 它的创建是为了向Propel PWAS订户提供更有效的客户支持。
围绕Mojavi 3 MVC框架构建的用PHP5编写的CMS系统。
在RoR流行之前,PHP领域也有不少开发框架,例如Mojavi、WACT、PHPMvc和Seagull等。这些框架虽然也采用了MVC模式、数据库抽象层等技术。但由于当时PHP本身不像现在这样流行,所以这些框架都没有得到大量应用,最终...
Fresh Toolkit基于Mojavi / Propel / Smarty三重奏,并为任何Propel数据源,用户mgmt,邮件,本地化等提供CRUD功能。