深入理解Laravel框架--手动创建laravel框架(2)
2017-10-21 16:43
483 查看
在上一章我们利用composer,添加了我们的路由组件并且成功返回了结果。
现在我们来尝试如何构建我们Controller。
HomeController.php
同时我们要注册我们这一条路由在我们
routes.php文件
最后访问我们的地址
值得注意的,如果想要直接访问
RewriteEngine On
RewriteRule ^ index.php [L]
首先在composer.json中添加
下载完成之后,我们需要实例化一个数据库梳理的类。在实例化之前我们还有一些准备工作需要做
1. 创建
2. 根据
database.php文件夹中的相关设置
在我们的入口文件
上面一端实例化数据库
接着在我们的app文件夹中创建一个名为User.php的model,需要注意的是User这个模型对应的数据库就是小写user后面加上复数,也就是users这张表。当然也可以通过protect $table变量指定对应的表。
User.php
然后我们就可以使用我们ORM来操作数据了,我们在
HomeController.php文件
这时候访问我们的
同时修改Controller中的代码,使用视图,在laravel项目文件夹创建
这段代码要说的内容比较多,暂时先放到后面在说。
手动创建Laravel框架暂且告一段落。
现在我们来尝试如何构建我们Controller。
添加控制器模块
我们同样也按照laravel的的文件结构添加控制器,首先在你的Http文件下面新建一个Controllers文件夹,用于存放我们所有的控制器,新建一个HomeController.php文件,
HomeController.php
<?php namespace App\Http\Controllers; class HomeController { public function index () { return "Welecom ! This is your home page!"; } }
同时我们要注册我们这一条路由在我们
Http\routes.php文件中。
routes.php文件
<?php $app['router']->get('/',function(){ return 'Hello World'; }); $app['router']->get('home','App\Http\Controllers\HomeController@index'); ?>
最后访问我们的地址
http://127.0.0.1/index.php/home,就能够看到返回响应的结果。
值得注意的,如果想要直接访问
/home,省略掉
index.php,那么需要在apache中进行相应的配置。这个直接在项目的入口文件位置创建静态文件
.htaccess
RewriteEngine On
RewriteRule ^ index.php [L]
Model组件
添加完MVC中的控制器之后,我们接着就来添加MVC框架中的M,model组件。模型组件主要实现数据处理的功能,这部分功能有Laravel框架中
illuminate/database组件来完成。
首先在composer.json中添加
illuminate/database组件信息,然后执行
composer update,或者直接执行
composer require illuminate/database 5.*后面的数字时你的版本信息,具体可以到官网packgist上面查询。
下载完成之后,我们需要实例化一个数据库梳理的类。在实例化之前我们还有一些准备工作需要做
1. 创建
mysql数据库
test和
users表,
users表中,有
id,
name,
age等相关信息,并插入相关的测试数据
2. 根据
laravel的相关文件结构,在项目文件夹下创建一个
config文件夹,然后在
config文件夹中创建一个
database.php文件。
database.php文件夹中的相关设置
<?php return array( 'driver' => 'mysql',//选择数据库类型 'host' => '127.0.0.1',//数据库的地址 'database' => 'test',//选择数据库 'username' => 'root',//用户名 'password' => '',//密码 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'prefix' => ''//前缀 ); ?>
在我们的入口文件
index.php中,添加如下代码
<?php //首先引入composer自动加载文件 require __DIR__.'../vendor/autoload.php'; //接着实例化我们的服务容器 $app = new Illuminate/Container/Container(); //将事件和路由注册到我们的服务容器中 with(new \Illuminate\Events\EventServiceProvider($app))->register(); with(new \Illuminate\Routing\RoutingServiceProvider($app))->register(); //再接下来我们就实例化我们的数据库操作模型 $manager = new \Illuminate\Database\Capsule\Manager(); $manager->addConnection(requier '../config/database.php') ; $manager->bootEloquent(); //加载路由 require __DIR__.'/../app/Http/routes.php'; //实例化请求并分发处理请求 $request = \Illuminate\Http\Request::createFormGlobals(); $response = $app['router']->dispatch($request); $response->send(); ?>
上面一端实例化数据库
Illuminate\Database\Capsule\Manager的过程,通过
addConnection()函数完成数据库的相关配置并通过
bootEloquent函数完成了数据库
Eloquent ORM模块的启动。简单来说,通过配置连接数据库,并且启动ORM模块。
(ORM 指 object relationship mapping,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换)
ORM方式操作数据库需要两个步骤来实现,一个创建模型,二通过模型类的方法操作数据库。
接着在我们的app文件夹中创建一个名为User.php的model,需要注意的是User这个模型对应的数据库就是小写user后面加上复数,也就是users这张表。当然也可以通过protect $table变量指定对应的表。
User.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { public $timestamps = false; }
然后我们就可以使用我们ORM来操作数据了,我们在
HomeController.php文件中的
index方法中来操作。
HomeController.php文件
<?php namespace App\Http\Controllers; use App\User; class HomeController { public function index() { $user = User::first(); return $user; } }
这时候访问我们的
http://127.0.0.1/home,就能看到返回的用户数据了。
添加视图组件
接着我们添加MVC框架中V,Laravel中实现V层,使用了illuminate/view组件,所以我们使用
composer require illuminate/view下载到我们的项目中,然后修改我们项目的入口文件
index.php
<?php //use Illuminate\Database\Capsule\Manager; //引入自动加载文件 require __DIR__.'/..'.'/vendor/autoload.php'; //实例化服务器容器,注册事件、路由器服务提供商 $app = new Illuminate\Container\Container(); \Illuminate\Container\Container::setInstance($app); with(new \Illuminate\Events\EventServiceProvider($app))->register(); with(new \Illuminate\Routing\RoutingServiceProvider($app))->register(); //启动Eloquent ORM 模块并进行相关配置 $manager = new \Illuminate\Database\Capsule\Manager(); $manager->addConnection(require '../config/database.php'); $manager->bootEloquent(); $app->instance('config',new \Illuminate\Support\Fluent()); $app['config']['view.compiled'] = __DIR__."/../storage/framework/views/"; $app['config']['view.paths'] = ["E:\\www\\lara\\resources\\views"]; with(new \Illuminate\View\ViewServiceProvider($app))->register(); with(new \Illuminate\Filesystem\FilesystemServiceProvider($app))->register(); //加载路由 require __DIR__.'/../app/Http/routes.php'; //实例化请求并分发处理请求 $request = \Illuminate\Http\Request::createFromGlobals(); $response = $app['router']->dispatch($request); $response->send();
同时修改Controller中的代码,使用视图,在laravel项目文件夹创建
resource/views/文件夹,并创建
home.blade.php
<?php namespace App\Http\Controllers; use App\Models\Student; use App\User; use Illuminate\Container\Container; class HomeController { public function index() { $user = User::first(); $app = Container::getInstance(); $factory = $app->make('view'); return $factory->make('home')->with('user',$user); } }
这段代码要说的内容比较多,暂时先放到后面在说。
手动创建Laravel框架暂且告一段落。
相关文章推荐
- 深入理解Laravel框架--手动创建laravel框架(1)
- 用户管理命令useradd等的深入理解及手动创建用户
- Android深入理解Context(二)Activity和Service的Context创建过程
- 深入理解动态创建数组
- 深入理解Spring4框架(三)——Bean
- 深入理解springmvc 框架思想
- Laravel 服务容器实例教程 —— 深入理解控制反转(IoC)和依赖注入(DI)
- 深入理解Java对象的创建过程:类的初始化与实例化
- 深入理解Java虚拟机之对象的创建-内存布局-访问定位
- 【深入理解JVM】:Java对象的创建、内存布局、访问定位
- 深入理解JavaScript系列(47):对象创建模式(上篇)
- 一个深入理解JAVA传统线程对象创建的例子
- java基础之集合框架--HashSet深入理解
- 10 scrapy框架解读--深入理解爬虫原理
- 深入理解Oracle索引(25):一招鲜、吃遍天之单字段索引创建思路
- 深入理解Oracle索引(25):一招鲜、吃遍天之单字段索引创建思路
- 深入理解linux内核v4l2框架之videobuf2 .
- MFC多文档模板手动创建框架的一个问题
- 深入理解Activity进阶系列(二):界面创建
- laravel框架学习(四)执行创建中间件后,提示无法找到该中间件的解决方法