[翻译]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 ...
随机推荐
- JSON语法五大要素图文介绍
原文:http://www.jb51.net/article/32398.htm JSON语法是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成,下面就进行学习研究,希望本文能教会 ...
- vuejs里封装的和IOS,Android通信模块
项目需要,在vuejs开发的web项目中与APP进行通信,实现原理和cordova一致.使用WebViewJavascriptBridge. 其实也是通过拦截url scheme,支持ios6往前的系 ...
- java内省机制及PropertyUtils使用方法
背景 一般情况下,在Java中你可以通过get方法轻松获取beans中的属性值.但是,当你事先不知道beans的类型或者将要访问或修改的属性名时,该怎么办?Java语言中提供了一些像java.bean ...
- C# 获取汉字拼音首字母
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节探讨C#获取汉字拼音首字母的方法: 代码类东西, ...
- 2.1 C#的关键字
关键字是被C#规定了用途的重要单词.在visual studio中,关键字以蓝色字体显示.图中红色方框圈起来的就是关键字. 关键字 class ,这个关键字的用途是声明类.比如上面例子中,类名叫做Pr ...
- javaSE第三篇
1.classpath: set classpath = 类路径 用来找class文件 set classpath = .;(默认表示当前路径 2.数组的拷贝 方法一:Arrays.copyOf( ...
- java选择排序
/** * 选择排序 * @param a * @date 2016-10-8 * @author shaobn */ public static void selectSort(int[] a){ ...
- linux命令行中单个减号表示标准输入输出流
tar cvf - /src/myprojectsrc 这里本来是要输出到一个.tar文件的,目标.tar文件应该放在上面命令的减号处,因此这里的减号表示标准输出流. 减号单独作为命令行参数时,是标准 ...
- Java找不到或无法加载主类
今天用cmd运行一下java出现了找不到或无法加载主类 的问题 javac编译可以通过 java运行不了 原因: 看一下java版本 看一下javac版本: 编译和运行环境的版本不一样报错原来是用 ...
- 关于oracle数据库中进行查询的时候出现效率特别差的一种情况
下面这段代码执行效率是极慢的(根本没执行完成过): select /*+ parallel(16) */ z.small_code,trunc(hs.CREATED_AT),sum(hs.COST_S ...