海豚PHP扩展api接口开发

1 海豚PHP简介

海豚PHP尽管是一套基于ThinkPHP5.1开发的一套框架,但是在跟ThinkPHP还是存在不少差异,比如其模块的目录结构。

2 海豚PHP接口

步骤1:把public目录下的admin.php文件复制一份,然后改名为api.php



步骤2:接着,修改【根目录/public/api.php】文件内容,如下:下面的黄色内容即为修改内容

<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

// [ 应用入口文件 ]
namespace think;

// [ PHP版本检查 ]
header("Content-type: text/html; charset=utf-8");
if (version_compare(PHP_VERSION, '5.6', '<')) {
die('PHP版本过低,最少需要PHP5.6,请升级PHP版本!');
}

// [ 应用入口文件 ]

// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');

// 定义入口为admin
define('ENTRANCE', 'api');

// 加载基础文件
require __DIR__ . '/../thinkphp/base.php';

// 支持事先使用静态方法设置Request对象和Config对象

// 检查是否安装
if(!is_file('../data/install.lock')){
define('BIND_MODULE', 'install');
Container::get('app')->bind('install')->run()->send();
} else {
// 执行应用并响应
Container::get('app')->run()->send();
}


步骤3:接着,修改【根目录/public/index.php】文件,添加内容如下:黄色内容即为添加内容

<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

// [ 应用入口文件 ]
namespace think;

// [ PHP版本检查 ]
header("Content-type: text/html; charset=utf-8");
if (version_compare(PHP_VERSION, '5.6', '<')) {
die('PHP版本过低,最少需要PHP5.6,请升级PHP版本!');
}

// 定义后台入口文件
define('ADMIN_FILE', 'admin.php');
define('API_FILE', 'api.php');

// 加载基础文件
require __DIR__ . '/../thinkphp/base.php';

// 支持事先使用静态方法设置Request对象和Config对象

// 检查是否安装
if(!is_file('../data/install.lock')){
define('BIND_MODULE', 'install');
Container::get('app')->bind('install')->run()->send();
} else {
// 执行应用并响应
Container::get('app')->run()->send();
}


步骤4:接着,修改【根目录/application/common/behavior/Config.php】文件,添加内容如下:黄色内容即为添加内容

<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

namespace app\common\behavior;

use app\admin\model\Config as ConfigModel;
use app\admin\model\Module as ModuleModel;
use think\facade\Env;
use think\facade\Request;
use think\facade\App;

/**
* 初始化配置信息行为
* 将系统配置信息合并到本地配置
* @package app\common\behavior
* @author CaiWeiMing <314013107@qq.com>
*/
class Config
{
/**
* 执行行为 run方法是Behavior唯一的接口
* @access public
* @return void
*/
public function run()
{
// 如果是安装操作,直接返回
if(defined('BIND_MODULE') && BIND_MODULE === 'install') return;

// 路由检测
$dispatch = App::routeCheck()->init()->getDispatch();
if (is_array($dispatch)) {
// 获取当前模块名称
$module = isset($dispatch[0]) ? $dispatch[0] : '';
} else {
// 闭包路由,直接返回
return;
}

// 获取入口目录
$base_file = Request::baseFile();
$base_dir = substr($base_file, 0, strripos($base_file, '/') + 1);
define('PUBLIC_PATH', $base_dir);

// 视图输出字符串内容替换
$view_replace_str = [
// 静态资源目录
'__STATIC__' => PUBLIC_PATH. 'static',
// 文件上传目录
'__UPLOADS__' => PUBLIC_PATH. 'uploads',
// JS插件目录
'__LIBS__' => PUBLIC_PATH. 'static/libs',
// 后台CSS目录
'__ADMIN_CSS__' => PUBLIC_PATH. 'static/admin/css',
// 后台JS目录
'__ADMIN_JS__' => PUBLIC_PATH. 'static/admin/js',
// 后台IMG目录
'__ADMIN_IMG__' => PUBLIC_PATH. 'static/admin/img',
// 前台CSS目录
'__HOME_CSS__' => PUBLIC_PATH. 'static/home/css',
// 前台JS目录
'__HOME_JS__' => PUBLIC_PATH. 'static/home/js',
// 前台IMG目录
'__HOME_IMG__' => PUBLIC_PATH. 'static/home/img',
// 表单项扩展目录
'__EXTEND_FORM__' => PUBLIC_PATH.'extend/form'
];
config('template.tpl_replace_string', $view_replace_str);

// 如果定义了入口为admin,则修改默认的访问控制器层
if(defined('ENTRANCE') && ENTRANCE == 'admin') {
define('ADMIN_FILE', substr($base_file, strripos($base_file, '/') + 1));

if ($module == '') {
header("Location: ".$base_file.'/admin', true, 302);exit();
}

if (!in_array($module, config('module.default_controller_layer'))) {
// 修改默认访问控制器层
config('url_controller_layer', 'admin');
// 修改视图模板路径
config('template.view_path', Env::get('app_path'). $module. '/view/admin/');
}

// 插件静态资源目录
config('template.tpl_replace_string.__PLUGINS__', '/plugins');
} else if (defined('ENTRANCE') && ENTRANCE == 'api') {
config('default_return_type', 'json');

define('API_FILE', substr($base_file, strripos($base_file, '/') + 1));
if ($module == '') {
header("Location: " . $base_file . '/api', true, 302);exit();
}

if (!in_array($module, config('module.default_controller_layer'))) {
// 修改默认访问控制器层
config('url_controller_layer', 'api');
}

// 插件静态资源目录
config('view_replace_str.__PLUGINS__', '/plugins');
}
else {
if ($module == 'admin') {
header("Location: ".$base_dir.ADMIN_FILE.'/admin', true, 302);exit();
}

if ($module != '' && !in_array($module, config('module.default_controller_layer'))) {
// 修改默认访问控制器层
config('url_controller_layer', 'home');
}
}

// 定义模块资源目录
config('template.tpl_replace_string.__MODULE_CSS__', PUBLIC_PATH. 'static/'. $module .'/css');
config('template.tpl_replace_string.__MODULE_JS__', PUBLIC_PATH. 'static/'. $module .'/js');
config('template.tpl_replace_string.__MODULE_IMG__', PUBLIC_PATH. 'static/'. $module .'/img');
config('template.tpl_replace_string.__MODULE_LIBS__', PUBLIC_PATH. 'static/'. $module .'/libs');
// 静态文件目录
config('public_static_path', PUBLIC_PATH. 'static/');

// 读取系统配置
$system_config = cache('system_config');
if (!$system_config) {
$ConfigModel = new ConfigModel();
$system_config = $ConfigModel->getConfig();
// 所有模型配置
$module_config = ModuleModel::where('config', 'neq', '')->column('config', 'name');
foreach ($module_config as $module_name => $config) {
$system_config[strtolower($module_name).'_config'] = json_decode($config, true);
}
// 非开发模式,缓存系统配置
if ($system_config['develop_mode'] == 0) {
cache('system_config', $system_config);
}
}

// 设置配置信息
config($system_config, 'app');
}
}


步骤5:接着,编写api接口,如下:



步骤6:接着,浏览器访问接口,如下:



相关推荐

  • 获取指定目录下的所有图片信息

    1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (

  • Thinkphp各版本的PHP要求

    ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3

  • Thinkphp5.1路径常量

    1 配置文件位置根目录/config/template.php2 配置文件内容&lt;?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reser

  • Thinkphp5.0路径常量

    1 配置文件位置根目录/application/模块名/config.php2 配置文件内容&lt;?php//配置文件return [ // 后台视图输出字符串内容替换 'view_replace_str' =&gt; [ '__PUBLIC__' =&gt; '/', '__STATIC__' =&gt; '/static', '__CONSOLE__' =&gt; '/static/console', '__CONSOLE_CSS__' =&gt; '/static/console/css', '__CONSOLE_IMAGES__' =&gt; '/static/console/ima

  • wp站点防止别人进行DDOS攻击

    1 简介wp站点防止别人进行DDOS攻击。2 配置位置位置:根目录/wp-config.php3 配置内容在【根目录/wp-config.php】文件的开头添加如下代码:if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){ $protocol = $_SERVER['SERVER_PROTOCOL'] ?? ''; if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){ $protocol = 'HTTP/1.0'; } hea

  • 只读属性

    1 只读属性简介只读属性的声明方式类似于普通属性,但需要使用 readonly 关键字。2 只读属性例子class Point { public readonly float $x; public readonly float $y; public function __construct(float $x, float $y) { $this-&gt;x = $x; $this-&gt;y = $y; }}$point = new Point(3.5, 2.8);echo $point-&gt;x; // 输出: 3.5echo $point-&gt;y; // 输出: 2.8// 下面的尝