与许多开发框架一样,FleaPHP 通常也使用一个入口文件来启动框架,并运行应用程序代码。虽然 FleaPHP 并不要求应用程序必须使用单一的入口文件,不过在本系列文章中,我大部分时间都使用单一入口文件。


单一入口应用程序

在 FleaPHP 应用程序使用 MVC 模式时,应用程序的所有功能都通过一个单一的文件来调用。这种通过单一文件来执行所有功能的应用程序,称为单一入口应用程序。有关单一入口应用程序的一些信息,可以参考 ChinaUnix 上的一篇帖子。

许多著名的 PHP 应用程序都是单一入口,例如 Drupal、WordPress、XOOPS、Mambo 等。当然也有 phpMyAdmin 这样的非单一入口应用程序。


创建入口文件

现在,我们来创建一个最简单的入口文件。打开文本编辑器,创建 htdocs/index.php 文件,内容如下:

<?php
require('FLEA/FLEA.php');
run();
?>

现在启动浏览器,输入地址:http://localhost/index.php,应该就可以看到如下的画面:

这个画面显示了一个错误信息,但是也表明 index.php 中的两行代码已经成功启动了 FleaPHP 框架。


实现我们的第一个控制器

在 FleaPHP 应用程序中,应用程序包含多个控制器。每一个控制器又提供一组控制器动作(后文及本系列文章中都简称为“动作”)。每一个浏览器发送给 FleaPHP 应用程序的请求,都是由一个动作来处理的。将一组相关的动作集中到一起,就形成了一个控制器。

现在我们来实现第一个控制器:

创建 htdocs/APP/Controller 目录,并创建文件 htdocs/APP/Controller/Default.php (注意严格匹配目录名和文件名的大小写),内容如下:

<?php
class Controller_Default
{
function actionIndex() {
echo "My first controller.";
}
}
?>

同时修改 index.php 入口文件,内容改为:

<?php
require('FLEA/FLEA.php');
import(dirname(__FILE__) . '/APP');
run();
?>

现在切换到浏览器,点击“刷新”按钮,可以看到 Default.php 文件中的 actionIndex 方法正确执行了。

从刚刚这个例子可以看到,每一个控制器实际上就是一个类,而一个动作则是该类的一个方法。


添加更多的动作

现在我们为这个控制器添加更多的 Action 方法:

<?php
class Controller_Default
{
function actionIndex() {
echo "My first controller.";
}
function actionSay() {
echo "Oh, FleaPHP great!";
}
}
?>

切换到浏览器,将浏览地址从 http://localhost/index.php 改为 http://localhost/index.php?action=say 并按回车键。可以看到输出内容改变了。

由此可见,action 参数的值决定了要调用控制器中的哪一个动作方法。在上面的例子中,action=say 时,调用的动作方法为 actionSay。因为 FleaPHP 默认要求每一个动作方法必须加上前缀 action。如果不提供 action 参数,则名为 index 的动作方法 actionIndex() 会被调用。


实现更多的控制器

创建新文件 htdocs/APP/Controller/Book.php,并输入内容:

<?php
class Controller_Book
{
function actionIndex() {
echo "Book controller default action.";
}
function actionSayTitle() {
echo h("<< Boost up with FleaPHP >>");
}
}
?>

现在切换到浏览器,输入地址 http://localhost/index.php?controller=Book&action=sayTitle,并按回车键。可以看到我们成功的调用了另一个控制器的动作方法。

与使用 action 参数指定要调用的动作类似,用 controller 参数可以指定要调用的控制器。而此时 action 参数指定的就是该控制器的动作。

FleaPHP 开发指南 - 3. 应用程序入口相关推荐

  1. FleaPHP 开发指南 - 5. 应用程序设置

    FleaPHP 是一个具有高度灵活性的框架.开发者可以用不同的设置来调整 FleaPHP 的工作方式.这些设置统一保存在名为"应用程序设置"的数据源中. 实际上,除了 FleaPH ...

  2. FleaPHP 开发指南

    FleaPHP 开发指南提供了使用 FleaPHP 开发应用程序的各方面内容.­开发指南中,大部分文章属于 Step by Step 的教程形式,少数文章深入描述 FleaPHP 的某些重要特征. 虽 ...

  3. Python开发指南[1]之程序员计时小时钟(附源码)

    Python开发指南[1]之程序员计时小时钟 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 Python作为一门编程语言,这门语言的魅力和影响力已经远超C#.C++等编程 ...

  4. FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式

    理解 FleaPHP 中,MVC 模式是如何实现的,以及其特点,可以帮助你更好的运用 FleaPHP. 什么叫做设计模式? 简单来说,设计模式(Pattern)就是解决某一类问题的特定方法.由于这种特 ...

  5. Android开发指南 1──应用程序基础

    登录 |  注册 译言精选 订阅 社区 译言译事 翻译答问 译言帮助 文库 原文库 译文库 全部项目 空间 控制台 个人主页 发布 发布原文 发布翻译 发布编译 发布原创 首页 商业 科技 文化 体坛 ...

  6. Hue开发指南 - 提交 Spark 程序

    目录 Hue开发指南 1.Spark文件打包成一个Jar包提交Hue运行 1.1 上传Spark Jar包至HDFS文件系统 1.2.Hue中创建Spark任务 2.多jar包导入执行(依赖jar包与 ...

  7. FleaPHP 开发指南 - 4. 命名规范和目录结构

    FleaPHP 的命名规则和目录结构初看上去比较复杂,但习惯以后,你会发现这种命名规则带来许多好处.因此像 Zend Framework 也是采用同样的做法. 当然,FleaPHP 对于应用程序的命名 ...

  8. FleaPHP 开发指南 - 6. 访问数据库

    这一章我们就来看看 FleaPHP 的数据库访问功能.体验一下 FleaPHP 出色的自动化 CRUD 能力. 连接数据库 在 htdocs 目录中创建子目录 testDB,并在子目录下创建文件 te ...

  9. FleaPHP 开发指南 - 7. 数据表关联

    数据表关联是指两个或者多个数据表的记录之间的逻辑关系. 例如: 每一个公民都有一个身份证号码 每一位作者都写了多本(0-n)书籍,而每一本书籍都有多个(1-n)作者 每一篇文章都有多个(0-n)评论 ...

最新文章

  1. HDFS文件上传、下载和删除案例
  2. python中utf8占几个字节_为什么utf8占用3个字节
  3. 【干货】写给产品经理和设计师的用户体验知识
  4. HBase+Spark技术双周刊 第四期
  5. Perl中的替换(七)
  6. scala基础之泛型详解
  7. svn--Eclipse版本的安装步骤
  8. 自定义_Excel中的自定义函数(自定义函数的基础内容)
  9. ISO 22301 业务连续性管理(BCM) 认证培训及标准
  10. windows捕获串口数据_如何下载和安装用于Windows数据包捕获的Npcap库?
  11. lookup-method方法理解
  12. 为什么人人都爱油炸食物?
  13. FreeRTOS动态创建任务
  14. 【历史上的今天】4 月 4 日:互联网新时代的缔造者出现;微软成立;苹果公司元老诞生
  15. MS Castap学习(1)
  16. Flyway详解以及Springboot集成Flyway
  17. Android 布局圆角方案总结
  18. win10怎么卸载更新文件?
  19. 【硬件】CPU(一)
  20. vue使用vuetify创建项目运行报错:error Component name XXX should always be multi-word vue/multi-word-compon

热门文章

  1. python 的 轮子
  2. jquery end()用法
  3. 2017-2018-2 20155203《网络对抗技术》Exp9 :Web安全基础
  4. 在设备上开启telnet服务
  5. 2022杭电多校第八场题解
  6. RTOS 系统篇-多任务协同与复杂消息的设计
  7. 《 初学 》 html5 制作简单时钟
  8. 【读书笔记】代码思考
  9. nginx入门-个人总结
  10. HBase :HBase高级shell管理命令