配置mojavi

第二章: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。
代码如下
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)。
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文件。模板没有固定的命名规则。

 
    在模板内部,$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之间还是有很多的不同的地方;只要认真地看它们的配置文件的信息,问题是不大的。

你可能感兴趣的:(PHP)