 
          {{wikiTitle}}
应用开发
目录:
多应用开发
目前采用的是多应用开发,已经拥有:adminapi、api、outapi、kefuapi。
对应用的目录结构如下
├─app 应用目录
│  ├─index              主应用
│  │  ├─controller      控制器目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  ├─route           路由目录
而我们的service、dao、model都是公用的。不在刻意的区分应用去写业务。这样的话所有的业务尽量共被所有的应用所使用,提高代码复用性
应用配置
增加app/index/config/route.php,增加如下代码,因为在总配置中,并没有开启强制路由,所以到单独配置,如果不需要强制路由可以不用增加此配置文件
return [
    // 是否强制使用路由
    'url_route_must'        => true,
    // 合并路由规则
    'route_rule_merge'      => true,
    // 路由是否完全匹配
    'route_complete_match'  => true,
    // 是否自动转换URL中的控制器和操作名
    'url_convert'           => false,
];
应用路由配置
路由存放在app/index/route/目录。文件名称可以随意创建。默认使用route.php即可
<?php
use think\facade\Route;
Route::get('/',function(){
    echo '我是index应用';
});
定义路由后访问:
http://域名/index/
控制器新增
控制器存放在app/index/controller目录下,创建Home.php文件
<?php
namespace app\index\controller
class Home  extends BaseController
{
    public function index()
    {
        echo '我是home->index';
    }
}
路由配置
Route::get('/home','Home/index');
控制器下多层目录路由配置
例如控制器下的目录是app\index\controller\config\SystemConfig.php
多级目录需要用点来区分,斜杠后面的是控制器中的具体方法
Route::get('/config','config.SystemConfig/index');
异常处理
创建app\index\IndexExceptionHandle.php
<?php
namespace app\index;
use think\exception\Handle;
use think\Response;
use Throwable;
class IndexExceptionHandle extends Handle
{
    //不需要记录信息(日志)的异常类列表
    protected $ignoreReport = [
    ];
    //这里可以记录异常日志
    public function report(Throwable $exception): void
    {
    }
    //这里可以处理异常信息如何抛出,相应给用户
    public function render($request, Throwable $e): Response
    {
        //可以判断某个异常抛出的状态和展示给用户的内容
        if ($e instanceof DbException) {
            return app('json')->fail(100102, $massageData);
        }
        //如果某个异常需要使用系统自带的抛出可以使用下面的方式
        return parent::render($request,$e);
    }
}
services在controller的使用
可以在构造方法中注入需要使用的service.
如果继承了BaseController需要调用parent::__construct($app);
<?php
namespace app\index\controller
use think\facade\App;
use app\services\user\UserServices;
class Home  extends BaseController
{
    //注入service
    public function __construct(App $app, UserServices $services)
    {
        parent::__construct($app);
        $this->services = $services;
    }
    public function index()
    {
        //查询用户uid=1的用户信息
        $user = $this->services->get(1);
    }
}
 
             {{cateWiki.like_num}}人点赞
            {{cateWiki.like_num}}人点赞
           
             0人点赞
            0人点赞
          
              
                评论({{cateWiki.comment_num}})
                 {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
                  {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
              
              
                 {{cateWiki.page_view_num}}人看过该文档
                {{cateWiki.page_view_num}}人看过该文档
              
            
             {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
                  {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
              
              
                 {{cateWiki.page_view_num}}人看过该文档
                {{cateWiki.page_view_num}}人看过该文档
              
            
              
                评论(0)
                 {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
                  {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
              
              
                 577人看过该文档
                577人看过该文档
              
            
             {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
                  {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
                
              
              
                 577人看过该文档
                577人看过该文档
              
             
               
                    
                    
                      {{item.user ? item.user.nickname : ''}}
                      
                        (自评)
                      
                    
                  
                  {{item.content}}
                  
                        {{item.create_time}}
                        
                          删除
                        
                      
                       
                           {{item.like ? item.like.like_num : 0}}
                          {{item.like ? item.like.like_num : 0}}
                        
                        
                           {{replyIndex == index ? '取消回复' : '回复'}}
                          {{replyIndex == index ? '取消回复' : '回复'}}
                        
                       
                          
          搜索结果
          为您找到{{wikiCount}}条结果
          
            
            
              
              
                
                
                  
                    
                       {{item.page_view_num}}
                      {{item.page_view_num}}
                    
                    
                       {{item.like ? item.like.like_num : 0}}
                      {{item.like ? item.like.like_num : 0}}
                    
                    
                       {{item.comment ? item.comment.comment_num : 0}}
                      {{item.comment ? item.comment.comment_num : 0}}
                    
                  
                
              
            
          
          
            
      
                    位置:
                    
                      
                        {{path.name}}
                      
                      {{(i+1) == item.catalogue.path_data.length ? '':'/'}}
                    
                  
                   {{item.page_view_num}}
                      {{item.page_view_num}}
                    
                    
                       {{item.like ? item.like.like_num : 0}}
                      {{item.like ? item.like.like_num : 0}}
                    
                    
                       {{item.comment ? item.comment.comment_num : 0}}
                      {{item.comment ? item.comment.comment_num : 0}}
                    
                   
        
         
              