?下面由composer教程栏目带大家介绍利用组件开发与composer构建类Laravel框架,希望对需要的朋友有所帮助!
|
下面由composer教程栏目带大家介绍利用组件开发与composer构建类Laravel框架,希望对需要的朋友有所帮助!
(注意这篇文章不适合零基础同学,需要一定得PHP基础) 那么什么是组件式开发? 接下来手动构建Laravel框架中的路由功能、控制器功能、模型、视图。 环境要求: 步骤: 1、项目初始化 {
"require":{
"illuminate/routing":"*",
"illuminate/events":"*",
"illuminate/database":"*",
"illuminate/view":"*"
},
"autoload":{
"psr-4":{
"App\\":"app/"
} }}composer就是根据composer.json中的内容来加载组件的。其中有路由组件、事件组件、数据库组件、视图组件(其中控制器组件已经包括在路由组件)。autoload的配置为psr-4规范,也就是说当我们使用“$user =new \App\User()”实例化User对象时,autoload会在app目录下查找User.php文件。有了composer.json之后就可以加载组件了,在window下是用cmd定位到lara目录然后使用composer update命令,在linux类似。在加载之后有如下目录: 2、配置路由文件 <?php
//调用自动加载文件函数
require __DIR__.'/../vendor/autoload.php'; //实例化服务器容器,框架的一些功能生成都需要服务容器来实现,服务器容器来来服务注册和解析,比如可以实现下面两个服务的
//注册。注册之后可以用$app['router']来调用服务。
$app=new Illuminate\Container\Container; //setInstance将服务容器的实例添加为静态属性,这样就可以在任何位置获得服务器的实例。
Illuminate\Container\Container::setInstance($app); //注册时间和路由
with(new Illuminate\Events\EventServiceProvider($app))->register();
with(new Illuminate\Routing\RoutingServiceProvider($app))->register(); //加载路由
require __DIR__.'/../app/Http/Routes.php'; //实例化请求分发处理程序
$request =Illuminate\Http\Request::createFromGlobals();
$response =$app['router']->dispatch($request); //返回请求的响应
$response->send(); ?>接下来设置路由文件。在lara目录下创建app文件夹,在该目录再创建一个Http文件夹,在Http目录下创建一个routes.php文件。内容如下(学过laravel框架的人应该很清楚) <?php
$app['router']->get('/',function(){
return '<h1>路由成功!</h1>';
}); $app['router']->get('welcome','App\Http\Controllers\WelcomeController@index'); ?>接下来再通过服务器访问到public的index,结果如下: 3、配置控制器模块 <?php
namespace App\Http\Controllers; class WelcomeController
{
public function index(){
return "控制器";
}
} ?>然后再配置路由文件为: <?php
$app['router']->get('/',function(){
return '<h1>路由成功!</h1>';
}); $app['router']->get('welcome','App\Http\Controllers\WelcomeController@index'); ?>接下来再访问localhost:8080/lara/public/index.php/welcome(这是我的路径,大家根据自己的服务器写)结果; 4、配置模型 <?php
use Illuminate\Database\Capsule\Manager; //调用自动加载文件函数
require __DIR__.'/../vendor/autoload.php'; //实例化服务器容器,框架的一些功能生成都需要服务容器来实现,服务器容器来来服务注册和解析,比如可以实现下面两个服务的
//注册。注册之后可以用$app['router']来调用服务。
$app=new Illuminate\Container\Container; //setInstance将服务容器的实例添加为静态属性,这样就可以在任何位置获得服务器的实例。
Illuminate\Container\Container::setInstance($app); //注册时间和路由
with(new Illuminate\Events\EventServiceProvider($app))->register();
with(new Illuminate\Routing\RoutingServiceProvider($app))->register(); //加载路由
//启动Eloquent ORM模块并进行相关配置
$manager =new Manager(); $manager->addConnection(require '../config/database.php'); $manager->bootEloquent(); require __DIR__.'/../app/Http/Routes.php'; //实例化请求分发处理程序
$request =Illuminate\Http\Request::createFromGlobals(); $response =$app['router']->dispatch($request); //返回请求的响应
$response->send(); ?>然后配置数据库连接,在lara目录下创建config文件夹,然后创建database.php <?php
return [ 'driver' =>'mysql', 'host' =>'localhost', 'database' =>'lara', 'username' =>'root', 'password' =>'123', 'charset' =>'utf8', 'collation' =>'utf8_general_ci', 'prefix' =>''
]; ?>大家根据自己的数据库配置相关参数。 <?php
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Student extends model
{
//禁用createTime/updateTime;
public $timestamps = false;
} ?>我没有创建createTime和updateTime字段所以要设置$timestamps = false; <?php
namespace App\Http\Controllers; use App\Models\Student; use Illuminate\Container\Container; class WelcomeController
{
public function index(){
$student =Student::first(); $data =$student->getAttributes(); return $data['name'].";".$data['age'];
}
} ?>再访问localhost:8080/lara/public/index.php/welcome <?php
use Illuminate\Database\Capsule\Manager; use Illuminate\Support\Fluent; //调用自动加载文件函数
require __DIR__.'/../vendor/autoload.php'; //实例化服务器容器,框架的一些功能生成都需要服务容器来实现,服务器容器来来服务注册和解析,比如可以实现下面两个服务的
//注册。注册之后可以用$app['router']来调用服务。
$app=new Illuminate\Container\Container; //setInstance将服务容器的实例添加为静态属性,这样就可以在任何位置获得服务器的实例。
Illuminate\Container\Container::setInstance($app); //注册时间和路由
with(new Illuminate\Events\EventServiceProvider($app))->register();
with(new Illuminate\Routing\RoutingServiceProvider($app))->register(); //加载路由
//启动Eloquent ORM模块并进行相关配置
$manager =new Manager(); $manager->addConnection(require '../config/database.php'); $manager->bootEloquent(); $app->instance('config',new Fluent); $app['config']['view.compiled'] = "E:\\laravel\\lara\\storage\\framework\\views\\"; $app['config']['view.paths'] = ["E:\\laravel\\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(); ?>其中的路径根据自己电脑配置。 <?php
namespace App\Http\Controllers; use App\Models\Student; use Illuminate\Container\Container; class WelcomeController
{
public function index(){
$student =Student::first(); $data =$student->getAttributes(); $app=Container::getInstance(); $factory =$app->make('view'); return $factory->make('welcome')->with('data',$data);
}
} ?>读取一行数据给视图文件welcome {{ $data['name']}}{{ $data['age']}}主要不要用php标签包围该代码 以上就是介绍利用组件开发与composer构建类Laravel框架的详细内容,更多请关注模板之家(www.mb5.com.cn)其它相关文章! |
