第二章: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的配置文件,包括数据库连接、错误处理等设置。 - **创建控制器**:编写控制器类,定义处理用户请求的方法。 - **设计模型**:为应用创建模型类,实现与数据库的交互。 - **...
propelAdmin是用NSIS(Nullsoft可脚本安装系统)编写的一组工具,用于处理Propel Accelerator的管理。 它的创建是为了向Propel PWAS订户提供更有效的客户支持。
1. "mojavi":可能是一个基于Mojavi框架的代码库,Mojavi是一个轻量级的PHP框架,用于构建高效和可维护的Web应用。 2. "log":通常用于存放系统日志,记录系统运行时的错误信息和其他关键事件,有助于调试和问题排查...
随着PHP5的发布,他开始着手开发Symfony的核心,其基于Mojavi MVC框架、Propel ORM以及Ruby on Rails的模板辅助方法。Symfony最初是为了Sensio的项目而开发的,目的是提高开发效率,让Web应用开发更加直观和易于维护...
- **技术基础**:Symfony的核心基于Mojavi MVC框架、Propel ORM以及Ruby on Rails的模板辅助方法。 - **应用场景**:最初是为了解决一个女性内衣零售网站的开发需求而诞生,之后逐步发展成为了一个广受欢迎的开发...
在压缩包`fresh-0.871`中,包含了Fresh Toolkit的具体版本,你可以解压后按照文档进行安装和配置。使用这个工具包,开发者可以更快地开发出高质量的Web应用,同时也能够享受到开源社区的持续支持和更新。 总的来说...
对于ZesticCMS,这个文件会指导用户如何正确安装和配置系统,了解其运行环境需求,以及如何获取技术支持和社区资源。 **lib目录** `lib`目录包含了ZesticCMS的核心库文件,这些文件通常包含类和函数,用于实现系统...
在RoR流行之前,PHP领域也有不少开发框架,例如Mojavi、WACT、PHPMvc和Seagull等。这些框架虽然也采用了MVC模式、数据库抽象层等技术。但由于当时PHP本身不像现在这样流行,所以这些框架都没有得到大量应用,最终...
- **开发ノウハウ**:分享负载均衡和集群的配置与管理经验。 ### 测试部分知识点 #### 品质意识的建立(1级) - **品质的重要性**:阐述软件质量对于用户体验和业务价值的影响。 - **糟糕的品质会带来什么**:...
- **Mojavi**: 用于MVC模型层,增强了模型层的灵活性。 - **扩展性**: 极具扩展性,允许开发者根据需求定制框架。 - **兼容性**: 不支持PHP 4,要求PHP 5及以上版本。 - **复杂性**: 相较于其他框架,使用起来稍微...