快速入门

经典博客教程

很感谢你尝试Li3!这一部分栏目为那些想了解这个框架可以做什么的php用户所设计。像这样深入代码是一种很好的方式去体会快速应用开发(Rapid Application Development)。
等到你完成了这一部分的学习你将搭建一个可以读写数据库的简单博客平台。而之后的部分栏目将解释更多细节。

配置

首先:保证你的第一个项目已经安装并且开始工作。如果你没有真正安装那还是要核实这一目录的 安装指南。 保证你接下来的每一步都是准确无误的。
等你安装所有工作以后,你应该可以通过浏览器浏览你的安装路径(比如:http://project.dev or http://127.0.0.1:8080, 剩下的博客教程假定你已经搞定了上面的工作)。然后浏览器将显示下面这样的页面片断。注意一些小细节可能和你系统设置的不太一样,但是所有的页面那些box都应该是绿色或者蓝色。如果不是的话就根据页面box下面的指引来修正。

MongoDB

当然我们博客需要一些稳定存储层。这个例子中,我们会用 MongoDB, 一个NoSQL(非关系型) 数据库。非关系型数据库的一个优点是不用制定预先的schema(模式),所以它和RAD开发方式完美的合作。

框架支持这些关系型数据库(MySQL,MariaDB,PostgreSQL,SQLite)和非关系型数据库(MongoDB,CouchDB)并且是第一个通过一个ORM模型来支持

想要初始化数据库,在mongoDB官方菜单下根据你的操作系统跟着指示一步步完成,开启数据库引擎。
为了让PHP访问mongo 你还应该安装PHP mongoDB 驱动。在mongoDB 官方文档下面的PHP驱动。驱动安装好了以后,我们重启动服务器来让修改生效。

现在,如果你刷新浏览器的页面,你应该可以看到一个律师的mongoDB 像图片下面的一样。如果你还有别的问题,那看看mongodb的开启指南是一个不错的方式。
现在我们有一个php可以访问的数据库了,然我们告诉Li3吧。通过修改项目文件 project/app/config/bootstrap/connections.php。第一,删除文件里面已经有的连接,为我们的博客添加一个新的连接:

// MongoDB Connection
Connections::add('default', array(
'type' => 'MongoDb',
'database' => 'blog',
'host' => 'localhost'
));

第一个参数仅仅知识命名来告诉别人连接什么东西罢了,li3 默认也是用 ‘default’连接除非另有说明。
第二个参数用来指定连接信息。在这个例子中,我们制定连接类型是’MongoDB’,通过域名‘localhost’服务连接数据库叫做‘blog’。这些参数可以被指定多种不同方式-看项目的文件-
/app/bootstrap/connections.php获得更多信息吧。

像这样修改bootstrap文件是一种普通方式配置li3。看boostraping 指南来获得根多配置框架的细节。

我们的应用现在可以连接MongoDB数据库服务了,所以我们开始写blog平台代码吧。

MVC 以M开始

li3用了MVC模式。如果你不熟悉web开发模式那么你等等在去看一下吧,但是现在我们先创建我们的第一个model(模型),一个提交模型用来处理博客post的域逻辑。
首先,在project/app/models/Posts.php创建一个新文件。如果你命名你的文件和结构化你的代码通过li3的惯例,核心的库代码将自动处理大量工作。这也意味着model文件本身是简单和短小的。

namespace app\models;

class Posts extends \lithium\data\Model {}

这里背后有很多工作。首先,li3知道我们用了默认的连接因为我们并没有额外指定。接着,知道我们的model命名为Posts,它将用MongoDB建立叫做‘posts’的连接。我们当然继承了很多有用的方法和操作用于处理数据库,并且在接下来的部分教程我们将学到更多有关的内容。
先休息一下,什么?schema安装?事实上,MongoDB并不要求你去一开始就是设置-仅仅等到你insert或着执行数据库处理才适当的请求。这就是RAD!

在Control层

控制器安装只是一个简单的开始。创建一个新文件在项目 /app/controllers/PostsController.php 同时写上下面的东西:

namespace app\controllers;

class PostsController extends \lithium\action\Controller {}

你应该注意到了这个细节:文件名是驼峰命名的,和类名也是。文件夹路径匹配他们各自的命名空间,并且是反斜杠。这是li3的一部分代码约定,你应该遵守它并且享受它为你带来的便利。

然后我们继续创建一个简单的活动,创建一个新的index()函数在你的新创建的控制器里面。在我们尝试连接所有的三个模型,控制器和视图,让我们简单的做个小处理输入一些假数据到view。下面是我们的做的。

namespace app\controllers;

class PostsController extends \lithium\action\Controller {

    public function index() {
return array('foo' => 'bar', 'title' => 'Posts');
}
}

li3行为发送数据到view通过返回组合数组确定各自的view的变量。下面简单的例子,我们view将接受字符串‘bar’在 $foo 而且 ‘Posts’ 在 title 将被用来设置页面的标题标签)。这个设定也可以用于compact()函数。如果我有一系列的变量我喜欢这样传,像下面这样方便:

return compact('lions', 'tigers', 'bears');

待续

原文地址:http://li3.me/docs/manual/quickstart

最新文章

  1. (转)Should 断言的基本使用方法
  2. windows下调用外部exe程序 SHELLEXECUTEINFO
  3. 发现一个jq的问题
  4. VoLTE、呼叫等待(保持)
  5. 全方位掌握 NSIS 的操作
  6. wireshark http过程
  7. pandas.DataFrame 中save方法
  8. 如何在CentOS 5.x 中安装Windows Azure Linux Agent (WALA)
  9. Unique Binary Search Trees,Unique Binary Search Trees II
  10. Java学习笔记——Java程序运行超时后退出或进行其他操作的实现
  11. LeetCode OJ 27. Remove Element
  12. 【shell脚本实例】一个恶作剧—— kill掉占用CPU较高的matlab进程
  13. Java 8——Optional
  14. Greenplum——大数据时代高性能的数据仓库与BI应用平台
  15. Entity Framework Core 命名约定
  16. Python:监控ASM剩余空间
  17. C++ C# python 中输入输出函数对比
  18. 基于android的天气预报的设计与实现
  19. WingMoney APP逆向,实现自动话费充值
  20. Linux后台执行的方法 - 关闭、退出不影响

热门文章

  1. zookeeper+jstorm的集群搭建
  2. spring定时任务
  3. 几种获取IP 根据IP获取地址的方法 JS,第三方 新浪 网易 腾讯
  4. __attribute__
  5. vulcan测试记录
  6. hibernate 多表查询
  7. Dev 关于用openFileDialog控件上传图片的问题
  8. 【皇甫】☀IOC和AOP的拓展实例
  9. HTML5--div、span超出部分省略号显示
  10. Material Design Lite,简洁惊艳的前端工具箱 之 交互组件。