Laravel5多应用修改

简介:

laravel5与laravel4在应用层上有很大的变化,主要变化有app目录结构,支持中间件等。


laraval5  多应用修改只需要改变自动加载即可。为了可复制性,可以定义一个应用名常量,后续增加应用可直接复制public和apps目录下应用,无需其它修改。


以 wap 应用为例:


在框架根目录下的public中新建目录 wap 并把原public 下所有文件剪切到wap中

wKiom1aUW-nDmgh8AAC2O0vz2TQ615.png



在wap目录中打开 index.php 文件,在顶部添加代码

1
define( 'APP_NAME' basename (__DIR__));  //定义当前应用名

如图:

wKiom1aUXGWTHKtcAAAgyeTdZAs343.png



修改index.php中两个引入文件路径

1
2
3
4
require  __DIR__ .  '/../../bootstrap/autoload.php' ;
 
 
$app  require_once  __DIR__ .  '/../../bootstrap/app.php' ;

特别说明:框架根目录下 artisan 命令行调用文件,也需要复制到public/wap目录中,否则在执行命令行功能时无法加载到对应的应用功能,修改方法与 index.php 相同。如果没有命令行功能要求可不做修改。


注:标准修改中会变动到内核类自动加载配置文件,但可以相对熟悉下框架的加载情况,如不想修改内核配置文件,可不修改内核配置而直接在 index.php 文件中的 require __DIR__ . '/../../bootstrap/autoload.php';  代码下面添加如下代码:(代码中同时给出添加空命名空间的加载方法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//自动加载器
$classLoader  = ComposerAutoloaderInit61a2eae33d1ec273aa64b59b5c8cbd67::getLoader();
//框架根目录
$baseDir  = dirname(dirname(__DIR__));
//外层目录,无命名空间,如同laravel4中的ClassLoader::addDirectories($dirs)
$classLoader ->addPsr4(null, [
     $baseDir  '/models' ,
     $baseDir  '/services' ,
]);
//应用
$classLoader ->addPsr4( 'App\\' array ( $baseDir  '/apps/'  . APP_NAME));
//类地图
$appDir  $baseDir  '/apps/'  . APP_NAME;
$classLoader ->addClassMap([
     'App\\Console\\Commands\\Inspire'  =>  $appDir  '/Console/Commands/Inspire.php' ,
     'App\\Console\\Kernel'  =>  $appDir  '/Console/Kernel.php' ,
     'App\\Events\\Event'  =>  $appDir  '/Events/Event.php' ,
     'App\\Exceptions\\Handler'  =>  $appDir  '/Exceptions/Handler.php' ,
     'App\\Http\\Controllers\\Auth\\AuthController'  =>  $appDir  '/Http/Controllers/Auth/AuthController.php' ,
     'App\\Http\\Controllers\\Auth\\PasswordController'  =>  $appDir  '/Http/Controllers/Auth/PasswordController.php' ,
     'App\\Http\\Controllers\\Controller'  =>  $appDir  '/Http/Controllers/Controller.php' ,
     'App\\Http\\Kernel'  =>  $appDir  '/Http/Kernel.php' ,
     'App\\Http\\Middleware\\Authenticate'  =>  $appDir  '/Http/Middleware/Authenticate.php' ,
     'App\\Http\\Middleware\\EncryptCookies'  =>  $appDir  '/Http/Middleware/EncryptCookies.php' ,
     'App\\Http\\Middleware\\RedirectIfAuthenticated'  =>  $appDir  '/Http/Middleware/RedirectIfAuthenticated.php' ,
     'App\\Http\\Middleware\\VerifyCsrfToken'  =>  $appDir  '/Http/Middleware/VerifyCsrfToken.php' ,
     'App\\Http\\Requests\\Request'  =>  $appDir  '/Http/Requests/Request.php' ,
     'App\\Jobs\\Job'  =>  $appDir  '/Jobs/Job.php' ,
     'App\\Providers\\AppServiceProvider'  =>  $appDir  '/Providers/AppServiceProvider.php' ,
     'App\\Providers\\AuthServiceProvider'  =>  $appDir  '/Providers/AuthServiceProvider.php' ,
     'App\\Providers\\EventServiceProvider'  =>  $appDir  '/Providers/EventServiceProvider.php' ,
     'App\\Providers\\RouteServiceProvider'  =>  $appDir  '/Providers/RouteServiceProvider.php' ,
     'App\\User'  =>  $appDir . '/User.php' ,
]);


如图:

wKiom1aUa3LzfTZ7AADTaZe6M-k614.png



打开  \bootstrap\app.php 文件,在创建 $app 对象下面添加代码

1
2
3
4
/*修改应用所在根目录*/
$app ->instance( 'path' realpath (__DIR__ .  '/../apps/'  . APP_NAME));
/*修改公共目录*/
$app ->instance( 'path.public' realpath (__DIR__ .  '/../public/'  . APP_NAME));

如图:

wKiom1aUXWWCAb3rAAA_gWdSXwE963.png



在框架根目录下把 app 目录名改成 apps 并在 apps 中新建目录 wap 把原 app 中所有目录及文件剪切到 wap 目录中

wKioL1aUXzrDqBQFAADthqP2f34866.png



打开 \vendor\composer\autoload_psr4.php  文件,修改 App\\ 命名空间所在目录:(可跳过

1
'App\\'  =>  array ( $baseDir  '/apps/'  . APP_NAME),

如图:

wKioL1aUX4PyUwh-AABo2bLte5s768.png



打开 \vendor\composer\autoload_classmap.php 文件修改应用所在的命名空间目录:(可跳过

1
$appDir  $baseDir  '/apps/'  . APP_NAME;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
     'App\\Console\\Commands\\Inspire'  =>  $appDir . '/Console/Commands/Inspire.php' ,
     'App\\Console\\Kernel'  =>  $appDir . '/Console/Kernel.php' ,
     'App\\Events\\Event'  =>  $appDir . '/Events/Event.php' ,
     'App\\Exceptions\\Handler'  =>  $appDir . '/Exceptions/Handler.php' ,
     'App\\Http\\Controllers\\Auth\\AuthController'  =>  $appDir . '/Http/Controllers/Auth/AuthController.php' ,
     'App\\Http\\Controllers\\Auth\\PasswordController'  =>  $appDir . '/Http/Controllers/Auth/PasswordController.php' ,
     'App\\Http\\Controllers\\Controller'  =>  $appDir . '/Http/Controllers/Controller.php' ,
     'App\\Http\\Kernel'  =>  $appDir . '/Http/Kernel.php' ,
     'App\\Http\\Middleware\\Authenticate'  =>  $appDir . '/Http/Middleware/Authenticate.php' ,
     'App\\Http\\Middleware\\EncryptCookies'  =>  $appDir . '/Http/Middleware/EncryptCookies.php' ,
     'App\\Http\\Middleware\\RedirectIfAuthenticated'  =>  $appDir . '/Http/Middleware/RedirectIfAuthenticated.php' ,
     'App\\Http\\Middleware\\VerifyCsrfToken'  =>  $appDir . '/Http/Middleware/VerifyCsrfToken.php' ,
     'App\\Http\\Requests\\Request'  =>  $appDir . '/Http/Requests/Request.php' ,
     'App\\Jobs\\Job'  =>  $appDir . '/Jobs/Job.php' ,
     'App\\Providers\\AppServiceProvider'  =>  $appDir . '/Providers/AppServiceProvider.php' ,
     'App\\Providers\\AuthServiceProvider'  =>  $appDir . '/Providers/AuthServiceProvider.php' ,
     'App\\Providers\\EventServiceProvider'  =>  $appDir . '/Providers/EventServiceProvider.php' ,
     'App\\Providers\\RouteServiceProvider'  =>  $appDir . '/Providers/RouteServiceProvider.php' ,
     'App\\User'  =>  $appDir . '/User.php' ,

如图:

wKioL1aUYOXi2SUnAADab62QheY171.png




在 \resources\views 目录下新建 wap 目录 ,用于存放当前应用的所有视图文件

wKiom1aUYWCQc7zGAACdbudPEfU924.png


打开 \config\view.php 文件修改视图所在目录:

1
2
3
'paths'  => [
         realpath (base_path( 'resources/views' ) .  '/'  . APP_NAME),
     ],

如图:

wKiom1aUYa6CPI5tAAAzbUo83Y0749.png


修改到这里整个 wap 应用就可以正常使用了,需要注意的是 apps/wap/  下所有的类必需以 App\ 命名空间开始,如果要添加Service 目录则命名空间为  App\Service\ 。


修改中可能需要改动  /vendor/  目录下的几个加载配置文件,如果在index.php 添加对应的自动加载覆盖代码,即可跳过修改配置文件。


对于应用的配置  config 这个目录,不建议改动,一般大部分配置可公用,所以可以根据应用名常量来动态的改变配置参数。

本文转自  ttlxihuan    51CTO博客,原文链接:http://blog.51cto.com/php2012web/1734088

相关文章
|
前端开发 JavaScript 数据可视化
最棒的 7 个 Laravel admin 后台管理系统推荐
Laravel 已经凭借自己的易用性及低门槛成为 github 上 stars 第一的 PHP 框架,本文将介绍我精心为大家挑选出来的 Laravel admin 后台管理系统,从抽象程度最低(灵活但代码量大)到抽象程度最高(代码量小但不灵活)来帮助大家选择合适自己的 Laravel admin 后台管理系统。
3229 0
|
网络安全 开发工具 文件存储
在群晖NAS上快速搭建属于自己的Git Server
在群晖NAS上快速搭建属于自己的Git Server
2417 0
|
应用服务中间件 数据安全/隐私保护 nginx
Gitlab----使用Docker方式安装部署Gitlab
Gitlab----使用Docker方式安装部署Gitlab
12290 0
Gitlab----使用Docker方式安装部署Gitlab
|
监控 文件存储 对象存储
Synology群晖DS916+上启用阿里云同步CloudSync,备份资料就是爽!
有了她,再也不用担心数据没有及时备份了,群晖推出Cloud Sync,群晖+阿里云对象存储,建立完备、廉价的信息备份方案!
28827 1
|
11月前
|
SQL 关系型数据库 BI
草率了!没想pgadmin这么强大
草率了!没想pgadmin这么强大
726 0
如何查看Mac上的隐藏文件和文件夹
隐藏的文件和文件夹 我们的电脑上,默认情况下会有很多隐藏文件和文件夹。这些文件和文件夹大部分都是一些支撑Mac运行的重要文件,主要是为了防止用户在使用过程中意外将其删除或者修改他们。
如何查看Mac上的隐藏文件和文件夹
|
关系型数据库 MySQL PHP
kde
|
8天前
|
JSON Linux 数据格式
Docker镜像加速指南:手把手教你配置国内镜像源
配置国内镜像源可大幅提升 Docker 拉取速度,解决访问 Docker Hub 缓慢问题。本文详解 Linux、Docker Desktop 配置方法,并提供测速对比与常见问题解答,附最新可用镜像源列表,助力高效开发部署。
kde
4896 12
|
2天前
|
人工智能 安全 Java
|
8天前
|
JavaScript Ubuntu IDE
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
764 3