
dolphinphp(海豚php框架)
v1.3.0 官方版- 软件大小:16.9 MB
- 更新日期:2019-06-22 11:20
- 软件语言:简体中文
- 软件类别:编程工具
- 软件授权:免费版
- 软件官网:待审核
- 适用平台:WinXP, Win7, Win8, Win10, WinAll
- 软件厂商:

软件介绍 人气软件 下载地址
DophinPHP(海豚PHP)是一个基于ThinkPHP5.1.34LTS开发的一套开源PHP快速开发框架,DophinPHP秉承极简、极速、极致的开发理念,为开发集成了基于数据-角色的权限管理机制,集成多种灵活快速构建工具,可方便快速扩展的模块、插件、钩子、数据包。统一了模块、插件、钩子、数据包之间的版本和依赖关系,进一步降低了代码和数据的冗余,以方便开发者快速构建自己的应用;用户在使用过程中,需要使用的控制器分两种,一种是前台控制器,一种是后台控制器;程序兼容treetable插件,可以为用户提供一个少写,做多的JavaScript库,使用此插件,用户可以在HTML表格中显示树,包括目录结构或嵌套列表,之所以不使用清单,是因为列表非常适合显示树,而表不适合,这个插件使用表因为除了树之外我需要多列来显示其他数据。强大又实用,需要的用户可以下载体验

软件功能
1、表单构建器
DolphinPHP目前内置了多达30多种表单项类型,比如:单行文本、多行文本、百度编辑器、markdown编辑器、单选、多选、开关等等,只需简单几句代码便可实现丰富的表单页面。

2、表格构建器
DolphinPHP提供了一系列针对构建数据表格的方法,可以帮助开发者快速构建数据表格,集成快速编辑、模糊搜索、字段排序、字段搜索、时间段搜索等功能。

3、侧栏构建器
DolphinPHP为大家提供了侧栏构建器,配合表单构建器或者表格构建器,可以轻松的创建侧栏,方便开发者把一些常用的设置、提示灯放置在右侧,进一步提升用户体验。

软件特色
1、模块化
DolphinPHP采用模块化的开发模式,在保证模块独立的同时,大大降低代码、数据的沉余,保证了应用程序的高内聚低耦合。开发完成的模块,可以通过导出功能将模块打包,放在任何用DolphinPHP开发的系统中,即可安装使用。

2、插件化
DolphinPHP为开发者提供了完善的插件机制,可以轻松的开发各种插件。目前已制作提供了阿里大于短信插件、Excel导入导出插件、二维码插件、条形码插件,未来会继续提供更多实用插件,即插即用。

3、数据化
为保证模块间的数据通用性和一致性,DolphinPHP提供了数据包功能。比如模块A和模块B均需要用到地区信息数据,那么可以通过安装相同的数据包来保证两个模块间的地区信息一致,避免两个模块的地区数据发生冲突的问题。

使用说明
创建模块信息文件
首先在application目录下建立模块文件夹,比如建立cms文件夹,并在cms文件夹下建立info.php文件。
info.php文件只需返回一个数组,里面设置了模块相关信息,如:

以上是模块的必填信息,还有其他相关信息将在下面的章节讲解。
建立好info.php文件之后,即可登陆后台“模块管理”安装模块了。
打开后台-系统->扩展中心->模块管理,点击“安装”进入模块安装页面。

安装模块时,系统会检测模块依赖、插件依赖、数据表,这个我们后面再详细说明。点击“安装”,即可成功把模块安装到系统。
模块配置
一个完整强大的模块,肯定会有许许多多可以自定义的配置,下面我们来详细讲解模块配置信息的各项参数。
我们知道,模块配置信息文件info.php是返回一个数组,里面包含了关于模块的各项信息。
参数含义类型必填
name模块名string是
title模块标题string是
identifier模块唯一标识string是
icon字体图标string否
description模块描述string是
author开发者string是
author_url开发者网址string否
version模块版本string是
need_module模块依赖array否
need_plugin插件依赖array否
tables数据表array否
database_prefix表前缀string否
config模块参数配置array否
access数据授权配置array否
action行为参数配置array否
trigger触发器配置array否
下面来逐一讲解各个参数。
name - 模块名
由字母和下划线组成,建议全部使用小写字母,如:cms、user、shop等等,因为系统会对应模块名和数据表名。
title - 模块标题
该标题会在顶部导航显示,也会在模块管理中显示。如:门户、用户、商城等。
identifier - 模块唯一标识
这是区分不同开发者不同模块的重要信息,格式:模块名.开发者标识.module,如:cms.ming.module 。
icon - 字体图标
系统内置了三套字体图标:SIMPLE LINE ICONS、FONT AWESOME、GLYPHICONS ,如填写:"fa fa-user"。当然,如果还不满足要求,您可以自己添加别的字体图标库。
description - 模块描述
对模块进行简略的描述,以便使用者能快速的了解该模块的功能或者其他信息。
author - 开发者
模块的开发者名称
author_url - 开发者网站地址
开发者网站地址,请填写完整的url地址,如:http://www.dolphinphp.com
version - 模块版本号
格式采用三段式:主版本号.次版本号.修订版本号,如:1.0.1。以后的模块升级,模块版本比较都按这种格式,请务必填写正确。
need_module - 模块依赖
格式[[模块名, 模块唯一标识, 依赖版本, 对比方式]]
有些模块需要依赖于某个或几个模块,那么就必须填写所依赖的模块信息,如:
'need_module' => [
['cms', 'cms.ming.module', '1.0.0']
]
表示模块依赖于cms模块,并且该模块的唯一标识符是cms.ming.module,因为不同开发者都可能开发名为cms的模块,这样,模块唯一标识的作用就体现出来了。
其中,模块名、模块唯一标识、依赖版本这三个是必填的,如果不填写对比方式,则默认为“=”,即等于某个版本。
版本比较使用了php的version_compare函数,该函数支持的比较操作符有:<、 lt、<=、 le、>、 gt、>=、 ge、==、 =、eq、 !=、<> 和 ne。
比较操作符含义
<、 lt小于
<=、 le小于等于
>、 gt大于
>=、 ge大于等于
==、 =、eq等于
!=、<>、 ne不等于
注意:此参数区分大小写,所以它的值应该是小写的,不能填写“LG”、“GT”等。
所依赖的模块需要大于某个版本
'need_module' => [
['cms', 'cms.ming.module', '1.0.0', '>']
]
// 或者
'need_module' => [
['cms', 'cms.ming.module', '1.0.0', 'gt']
]
依赖多个模块
'need_module' => [
['cms', 'cms.ming.module', '1.0.0', '>'],
['admin', 'admin.dolphinphp.module', '1.0.1']
]
need_plugin - 插件依赖
格式[[插件名, 插件唯一标识, 依赖版本, 对比方式]]
如果您的模块依赖有些插件,则需填写插件依赖,如:
'need_plugin' => [
['sms', 'sms.ming.plugin', '1.0.0']
]
其他用法和模块依赖类似,这里就不赘述了。
tables - 数据表
如果您的模块包含了数据表,则需填写数据表名。比如,cms模块有两张表,cms_article、cms_category,则这么填写:
'tables' => [
'cms_article',
'cms_category'
]
表名无需填写表前缀,系统检测的时候会自动带上系统设置的表前缀。
database_prefix - 表前缀
模块的数据表名建议格式为:表前缀+模块名+控制器,比如:dp_admin_config,那么database_prefix参数则填写:dp_。填写了表前缀后,系统在安装模块时,会将此表前缀替换成目标系统所设置的表前缀,方便不同用户安装您的模块。
config - 模块参数配置
如果模块需要自定义一些配置信息,则需配置config参数。
它的用法和添加表单项通用方法的addFormItems方法一致,可设置系统内置的30多种表单类型,比如:单选,复选、下拉、单行文本,编辑器、联动等等。
我们在开发微信模块的时候,需要给用户设置appid等信息,那么可以这样设置:
'config' => [
['text', 'appid', 'AppId', '应用ID,登录 微信公众平台 查看'],
['text', 'secret', 'AppSecret', '应用密钥,登录 微信公众平台 查看'],
['text', 'token', 'Token', '令牌,用于接口验证,登录 微信公众平台,在【基本配置】中设置'],
['text', 'aeskey', 'EncodingAESKey', '消息加解密密钥,登录 微信公众平台,在【基本配置】中设置'],
]
不同类型的参数是不同的,这个我们在后面的章节会讲到,这里不理解不要紧,只要知道如果需要设置配置信息,则按这种格式去配置。
如果需要配置分组,那么可以这样写:
'config' => [
['group',
[
'分组1' => [
['radio', 'status1', '单选', '', ['1' => '开启', '0' => '关闭'], 1],
['text', 'text1', '单行文本', '提示', 'x'],
['textarea', 'textarea1', '多行文本', '提示'],
['checkbox', 'checkbox1', '多选', '提示', ['1' => '是', '0' => '否'], 0],
],
'分组2' => [
['textarea', 'textarea2', '多行文本', '提示'],
['checkbox', 'checkbox2', '多选', '提示', ['1' => '是', '0' => '否'], 0],
]
]
]
]
配置好这些内容后,安装模块后才生效,并且需要在某个控制器执行 return $this->moduleConfig(); 即可自动生成这些配置的页面
比如在cms模块的Confg控制器中的index方法调用 return $this->moduleConfig();
class Config extends Admin
{
/**
* 文章设置页
* @return mixed
*/
public function index()
{
// 调用ModuleConfig()方法即可
return $this->moduleConfig();
}
}
那么只要访问这个方法,即可管理模块配置信息。
如何获取模块的配置,请参考方法参考
access - 授权配置
注意:1.3.2版本以后的数据授权,请查看数据授权(1.3.2+)
有些模块可能有这样的需求,需要给不同用户分配不同的权限,比如某些用户只能看某些内容,那么可以填写授权配置。
注意:这里的授权配置只是提供给您一个方便的操作去管理和设置权限节点,获取到某个用户的授权之后该如何操作则需要开发者自己去实现。
'access' => [
'group' => [
"tab_title" => '部门授权',
"table_name" => "admin_group",
"primary_key" => "id",
"parent_id" => "pid",
"node_name" => "name"
],
],
group 分组标识,名字自定义,可以设置多个授权。
tab_title tab导航标题
table_name 表名,表示要关联哪张表,不需要填写表前缀,这里表示部门表。
primary_key 主键字段名
parent_id 父级id字段名
node_name 权限节点字段名
model_name 模型名(可选)
page_tips 页面提示(可选,1.0.3+)
tips_type 提示类型(可选,默认为info,1.0.3+)
dp_admin_group数据表有如下三个字段,分别对应primary_key、parent_id、node_name。

安装模块之后,在“用户管理”中,点击操作栏的
按钮,可进入授权页面。

这里出现的节点,是从上面定义的表dp_admin_group获取的,这里设置了授权之后,在需要判断当前用户或者某个用户是否有某些权限,可以使用Access模型的getAuthNode方法和checkAuthNode方法。详细用法在“用户管理”-“数据授权”章节查看。
按模型获取数据
以上说的是读取的数据在同一张表上,如果有些数据在另外一张表,那么就不好处理了。比如上面的例子,部门名称在另外一张表,那么用以上的方法就做不到了。
如果遇到这样的需求,可以设置模型名。
'access' => [
'group' => [
"tab_title" => '部门授权',
"table_name" => "admin_group",
"primary_key" => "id",
"parent_id" => "pid",
"node_name" => "name",
"model_name" => 'Group'
],
],
这样配置的话,那你必须在你模块下有名为Group的模型文件,比如路径为:\app\模块名\model\Group.php'access' => [
'group' => [
"tab_title" => '部门授权',
"table_name" => "admin_group",
"primary_key" => "id",
"parent_id" => "pid",
"node_name" => "name",
"model_name" => 'User'
],
],
如果这样定义,那么必须存在\app\模块名\model\User.php这个文件。
除此之外,该模型下必须有一个特定的方法,方法名为access,你只需在这个方法返回你需要展示的数据即可。
这种方法灵活性比较大,可以随意查询数据,只要返回的数据中,有包含上面设置的三个字段名id、pid、name即可。
action - 行为配置
用于定义行为规则,具体参数如下
module 所属模块(必须)
name 行为标识(同个模块内,不得重复)(必须)
title 行为名称(必须)
remark 行为描述(必须)
rule 行为规则
log 日志规则
status 状态(0-禁用,1-启用)默认为禁用
'action' => [
[
'module' => 'cms',
'title' => '添加文章',
'remark' => '添加文章',
'name' => 'article_add',
'log' => '用户:[user|get_nickname] 在[time|format_time]添加了文章'
],
[
'module' => 'cms',
'name' => 'article_delete',
'title' => '删除文章',
'remark' => '删除文章',
'log' => '用户:[user|get_nickname] 在[time|format_time]删除了文章',
'status' => 1
],
],
trigger - 触发器配置
针对模块参数配置(config)可设置触发器,指定某个表单项的值为某个值时显示某些表单项。
比如模块参数配置如下:
'config' => [
['text', 'appid', 'AppId', '应用ID,登录 微信公众平台 查看'],
['text', 'secret', 'AppSecret', '应用密钥,登录 微信公众平台 查看'],
['text', 'token', 'Token', '令牌,用于接口验证,登录 微信公众平台,在【基本配置】中设置'],
['text', 'aeskey', 'EncodingAESKey', '消息加解密密钥,登录 微信公众平台,在【基本配置】中设置'],
]
我们希望当用户填写appid为123时才显示secret表单项,当secret填写456时才显示token和aeskey。
// 触发器
'trigger' => [
['appid', '123', 'secret'],
['secret', '456', 'token,aeskey']
]
常见问题
1.本地测试正常,上传到服务器提示找不到模块?
请确认服务器是否开启PATH_INFO,如果未开启,请先开启。
如果您的服务器不支持PATH_INFO,那请使用兼容模式访问。如:
?s=/模块/控制器/操作/[参数名/参数值...]
详细请查阅ThinkPHP文档
2.后台默认账号密码?
安装完后,后台登录地址为:
http://你的网址/admin.php/admin
1.0.0正式版之后,可以直接访问
http://你的网址/admin.php 或 http://你的网址/index.php/admin
默认账号:admin
默认密码:admin
请及时修改管理员密码,以免被不怀好意的人利用。
3.本地开发,mysql没有密码如何安装?
框架的安装程序默认会检查是否填写mysql密码,如果您本地开发时,mysql没有设置密码,那么安装前,请打开文件:
application\install\controller\Index.php
大概126行,将下图红框的那行代码注释掉,然后再安装。

提示:从1.0.2版本开始,已经默认不检查是否设置了mysql密码
4.开发模块的时候,好多菜单节点需要添加,好累啊,咋办?
温馨提示:在模块开发阶段,无需手动编写menu.php文件,需要什么节点直接在“节点管理”添加即可。等模块开发好了,在“模块管理”导出对应模块,系统会自动生成菜单文件,就是这么简单粗暴。
5.图片、文件上传失败,怎么办?
首先,先检查PHP是否安装了fileinfo扩展,此功能需要fileinfo扩展支持才能用。
其次,检查public\uploads目录是否有相应权限。
再次,请检测php.ini的post_max_size和upload_max_filesize是否设置得足够大。
最后,查看该用户角色是否分配了“文件上传”权限

6.在lnmp环境下,首页显示空白?
请查看php.ini中的disable_functions是否禁用了scandir函数。如果是,请删除scandir,然后重启php服务。
检查目录是否可写,扩展是否安装。
7.如何开启fileinfo扩展?
不同的服务器套件有不同的开启方法,下面介绍几种:
1.phpstudy
如果在Windows下用phpstudy套件,那么开启fileinfo很简单。

2.自己安装的lnmp环境
进入php源码中的fileinfo目录,不同的版本,路径会有所不同,请根据实际情况,找到对应的目录。
cd /home/ming/lnmp1.3-full/src/php-7.0.7/ext/fileinfo/
执行phpize命令
注意,该命令一定要在上面说到的fileinfo目录下执行
/usr/local/php/bin/phpize
如果执行成功,会有类似下面的信息
Configuring for:
PHP Api Version: 20151012
Zend Module Api No: 20151012
Zend Extension Api No: 320151012
配置php-config路径,以自己服务器的实际路径为准
./configure --with-php-config=/usr/local/php/bin/php-config
编译安装
make && make install
如果安装成功,会有类似下面的信息
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
修改php.ini,在后面加入
extension = fileinfo.so;
最后重启php服务即可。
8.如何开启pathinfo支持?
本框架需要服务器支持pathinfo,所以如果没有开启pathinfo,需要自行开启。
[Apache]
如果是在Windows下用phpstudy架设的,设置很简单,只需启用rewrite模块即可。
更新日志
修正:在PHP7.0环境下运行出错的问题(感谢网友:代名·词 的反馈)
修正:部分检索条件书写不正确的问题(感谢网友:゜碎念 的反馈)
修正:导出模块时,如果配置存在布局参数则导出失败的问题(感谢网友:沉默的大多数 的反馈)
修正:系统配置时间类型没有转换时间格式的问题
修正:插件和模块管理页面简介无法识别html的问题
修正:表单中有name为action的表单项时,url获取不正确的问题
修正:某些情况下,无法读取模块配置文件信息的问题(感谢网友:Talent.Miao 的反馈)
修正:在PHP7.3下long2ip方法报错的问题(感谢网友:青云 的反馈)
修正:系统设置类型为快速联动时报错的问题
修正:升级到TP5.1后,系统设置页面报错的问题
修正:表格的替换按钮在某些情况下报错的问题
修正:前台默认模块设置出错的问题
修正:定义路由规则后,无法找到控制器的问题(感谢网友:itlxt 的反馈)
修正:视图查询无法使用raw方法获取原始数据的问题(感谢网友:Talent.Miao 的反馈)
修正:其他角色无法通过右侧栏设置站点开关的问题(感谢网友:AngelsMelody 的反馈)
修正:addFilterList可能会导致不同用户之间数据互串的问题
改进:角色节点授权按模块分组
改进:左侧菜单,有url的节点,不会显示子节点
改进:数据授权支持夸模块调用指定模型(感谢网友:Talent.Miao 的建议)
改进:替换右侧按钮支持获取变量(感谢网友:暗涌 的建议)
改进:get_files_path方法返回的文件路径,键值为附件id
改进:setPageTips方法可以指定显示在表单的顶部还是底部(感谢网友:yangweijie 的建议)
人气软件
-
redis desktop manager2020.1中文 32.52 MB
/简体中文 -
s7 200 smart编程软件 187 MB
/简体中文 -
GX Works 2(三菱PLC编程软件) 487 MB
/简体中文 -
CIMCO Edit V8中文 248 MB
/简体中文 -
JetBrains DataGrip 353 MB
/英文 -
Dev C++下载 (TDM-GCC) 83.52 MB
/简体中文 -
TouchWin编辑工具(信捷触摸屏编程软件) 55.69 MB
/简体中文 -
信捷PLC编程工具软件 14.4 MB
/简体中文 -
TLauncher(Minecraft游戏启动器) 16.95 MB
/英文 -
Ardublock中文版(Arduino图形化编程软件) 2.65 MB
/简体中文