深入理解Laravel框架--手动创建laravel框架(2)
来源:互联网 发布:阿里的大数据应用 编辑:程序博客网 时间:2024/05/21 10:28
在上一章我们利用composer,添加了我们的路由组件并且成功返回了结果。
现在我们来尝试如何构建我们Controller。
添加控制器模块
我们同样也按照laravel的的文件结构添加控制器,首先在你的Http文件下面新建一个Controllers文件夹,用于存放我们所有的控制器,新建一个HomeController.php
文件,
HomeController.php
<?phpnamespace 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文件夹中的相关设置
<?phpreturn 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文件
<?phpnamespace 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
<?phpnamespace 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框架(2)
- 深入理解Laravel框架--手动创建laravel框架(1)
- laravel框架 创建控制器
- Laravel框架
- Laravel框架
- Laravel框架
- Laravel框架
- Laravel框架
- laravel手动创建分页
- laravel框架学习(路由)
- Laravel框架学习(CSRF)
- Laravel框架学习(中间件)
- Laravel框架学习(Response)
- laravel框架学习(一)
- laravel 框架学习(二)
- 一个月对于laravel框架的理解
- laravel框架下虚拟主机的创建
- php框架优秀框架laravel学习(-)
- MongoDB基础使用(一)
- koa2后端热更新
- yum安装的docker的卸载
- 学习GitHub
- Leetcode--Search in Rotated Sorted Array
- 深入理解Laravel框架--手动创建laravel框架(2)
- 卡尔曼滤波matlab仿真
- PHP代码审计实战之XDcms
- 靠谱的网站专题页seo优化技巧 恰当的网站专题页面能将时效性较强的事件转化为自己网站的流量,很多站点也有针对站内的重点产品或服务制作专门的页面,采用靠谱的seo优化技巧,让专题页的效果达到最佳。
- 从零开始开发Android版2048 (十)
- 趕快升級你的裝備去買V R
- C++风格_Google特色
- 安装配置maven时,使用mvn命令,报出mvn不是内部或外部命令解决方法
- 记一次揪心的MySQL数据恢复过程