[翻译]lithium 快速上手(QuickStart)
快速入门
经典博客教程
很感谢你尝试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
[翻译]lithium 快速上手(QuickStart)的更多相关文章
- 快速上手RaphaelJS-Instant RaphaelJS Starter翻译(一)
(目前发现一些文章被盗用的情况,我们将在每篇文章前面添加原文地址,本文源地址:http://www.cnblogs.com/idealer3d/p/Instant_RaphaelJS_Start ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手
原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- knockoutJS 快速上手
翻译:Knockout 快速上手 - 3: knockoutJS 快速上手 许多时候,学会一种技术的有效方式就是使用它解决实际中的问题.在这一节,我们将学习使用 Knockout 来创建一个常见的应用 ...
- EF Core 快速上手——EF Core 入门
EF Core 快速上手--EF Core 介绍 本章导航 从本书你能学到什么 对EF6.x 程序员的一些话 EF Core 概述 1.3.1 ORM框架的缺点 第一个EF Core应用 本文是对 ...
- Flask入门和快速上手
目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...
- python的requests快速上手、高级用法和身份认证
https://blog.csdn.net/qq_25134989/article/details/78800209 快速上手 迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其 ...
- 第2章 初学 emWin 的准备工作及其快速上手
以下内容转载自安富莱电子论坛:http://forum.armfly.com/forum.php?mod=viewthread&tid=24552&extra=page%3D3%26f ...
- axure快速上手
Axure RP是一个专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写.Axure RP是美国Axur ...
随机推荐
- java机试要点
Java机试准备 一般结构: import java.util.Scanner; public class Main{ public static void main(String[] args) ...
- kaggle实战记录 =>Digit Recognizer
date:2016-09-13 今天开始注册了kaggle,从digit recognizer开始学习, 由于是第一个案例对于整个流程目前我还不够了解,首先了解大神是怎么运行怎么构思,然后模仿.这样的 ...
- orange pi pc 体验(二)远程登录服务器
1.本人的板子是orangepi pc,安装的debian系统 2.启动完成后,默认可以用xshell登录板子的,使用nano更改/etc/apt/source.list root@OrangePI ...
- async 和 await小结
三大返回值: 返回类型 - Task<TResult> 返回类型 - Task 返回类型 - void 当你添加 async 关键字后,需要返回一个将用于后续操作的对象,请使用 Task& ...
- kdiff3的主窗口说明 Base Local Remote 分别代表什么分支
- 【转】Apache Digest验证
Apache默认使用basic模块验证,都是明文传输,不太安全,所以本文使用Digest来验证,以提高安全性. 1.Apache配置: A.目录权限配置 Alias /nagios "/us ...
- Response.End抛出ThreadAbortException 异常
最近在写程序过程中遇到了一个匪夷所思的错误:Response.End()方法抛出了ThreadAbortException异常,我的代码如下: public void doResponse(){ st ...
- c语言二维数组求最大值
#include<stdio.h> int main() { ,colum=,max; ][]={{,,,},{,,,},{-,,-,}}; max=a[][]; ;i<=;i++) ...
- hdu 1556
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 跨列设置column-span
column-span主要用来定义一个分列元素中的子元素能跨列多少.column-width.column-count等属性能让一元素分成多列,不管里面元素如何排放顺序,他们都是从左向右的放置内容,但 ...