众所周知,PHP7已经开始支持PHP强类型编程很久了,但是还是有那么多的程序员无论是理念还是实践依然停留在PHP弱类型的时代;
再回首,开启1个新项目,总有些工作如轮回似的重复再重复,比如 用户管理 、 权限管理 、 配置管理 、 菜单管理 、 语言管理、DB建模、模板管理 等;
观今朝,高级架构师、IT大佬、CXO满天飞,但是真正为PHP行业进步做出贡献的寥寥无几,大多处在赶项目、解BUG、开会、扯皮、甩锅、宫斗、包装、升职、跳槽、转行、养老、复制、粘贴等;
作者LetWang对此深表痛心,决定从我做起,改变现状,加大PHP在行业的影响力!
此框架无论是作为PHP7高级教程,还是作为行业通用基础组件业务支撑,再或者是作为PHP开源宝库贡献一份力量,HookPHP的应运而生都有着划时代的重大意义!
HookPHP项目地址:https://github.com/letwang/HookPHP,如果大家喜欢的话,请给个Star,让更多的人看到优秀的开源项目,为PHP发展贡献一把力量!QQ架构探讨群:679116380
创作此框架的作者是LetWang,2007年ASP,2008年ASP.NET(C#),从2009年一直PHP。
虽然中间几次创业,看过太多的源码,也曾服务于海外多家机构,但越是这样越发现自己的渺小: 一个人无法改变太多,需要带动整个群体一起进步!
纵观PHP行业主流框架,大概有 Laravel 、 Phalcon 、 Symfony 、 CodeIgniter 、 Yii 、 Aura 、 Cakephp 、 Zend 、 Kohana 、 FuelPHP 、 Slim 、 Typo3 、 ThinkPHP 、 Flight 、 PHPixie 、 Yaf 、 Swoole 、 Nette 、 Drupal 、 Workerman 、 PHPDevShell 、 Akelos 、 Prado 、 ZooP 、 QPHP 等,但是至今仍然没有一款像HookPHP框架这样基于PHP7强类型写法、开源免费、解决企业启动新项目时的重复劳动问题!
酝酿近10年,千魂梦绕,终崛起!向多年前《电商平台技术架构 多用户商城 仿天猫 淘宝 亚马逊 当当 阿里巴巴 大数据模块 低成本运维 高效开发》致敬!
一款基于C扩展搭建支持AI在线编程的PHP框架!
配置即产出,所想即所得。
解决企业启动新项目时的重复劳动问题。
基于PHP强大的WEB迅速开发能力,性能瓶颈用C扩展解决,后期如果业务需要不排除PHP shell_exec 调用GO来支持天然并发.
既避免业务代码中到处零散的SQL拼接,也避免ORM极差的性能瓶颈,业务SQL统一定义,一处定义多处随意使用。既方便SQL安全审计,又方便DBA建模、升级、优化。
权限管理
组件管理
用户管理
平台管理
配置管理
报错管理
语言管理
登录管理
超管管理
菜单管理
模板管理
翻译管理
微服务、多线程、多进程、常驻内存、主从分离、负载均衡…
用户自主上传组件 在线达到组件 安装、卸载、启用、禁用、排序、移动、归类…
根据节假日等不同规则动态显示自定义模板,在线任意选择模板显示风格
PAAS、ERP、电商、博客、官网 等众多平台,可以部署到一台服务器,共享类库、session、文件....
平台对应绑定独立域名或子域映射到对应平台
默认Bootstrap模板,多终端(手机、PC、Ipad…)设备、分辨率,风格自适应
国际化语言支持,中文、英语、俄语、西班牙语…
傻瓜式部署,一键初始化系统
通过总admin后台,管控各大平台配置
随PHP服务器启动,业务信息常驻内存 加速PHP
集成强大的RBAC体系,后台一键配置立即生效。
API支持RESTful风格,API产业化经济建设支持
API在手,随时重构适合多变的业务
//HookPHP基于C系扩展YAF搭建 感谢鸟哥 . ├── app//平台文件夹列表 下面每1个文件夹都是1个平台 │ ├── admin//【平台1】 中心管控 总后台,管理admin平台、paas平台、erp平台... │ │ ├── bin//终端命令 │ │ │ ├── install.php//一键安装初始化该平台 │ │ │ └── queue.php//队列消费服务(通过RabbitMQ实现) │ │ ├── Bootstrap.php//平台运行初始化引导 │ │ ├── controllers//控制器 │ │ │ ├── Abstract.php//抽象层封装 │ │ │ ├── Acl//RBAC权限体系 │ │ │ │ ├── Group.php//用户组 │ │ │ │ ├── Index.php//列表 │ │ │ │ ├── Resource.php//资源 │ │ │ │ ├── Role.php//角色 │ │ │ │ └── User.php//用户 │ │ │ ├── App.php//多平台管理 │ │ │ ├── Config.php//云端配置管理 │ │ │ ├── Error.php//统一收集错误处理 │ │ │ ├── Hook//用户上传动态组件管理 │ │ │ │ ├── Index.php//事件管理 │ │ │ │ └── Module.php//组件管理 │ │ │ ├── Index.php//首页仪表盘大数据大屏展示 │ │ │ ├── Lang.php//多语言管理 │ │ │ ├── Login.php//统一登录服务 │ │ │ ├── Manager.php//超级管理员管理 │ │ │ ├── Menu.php//多菜单管理 │ │ │ ├── Theme.php//多模板管理 │ │ │ ├── Translation.php//翻译管理 从谷歌、Bing、百度等源智能翻译数据 │ │ │ └── User//多用户管理 │ │ │ └── Index.php//列表 │ │ ├── hooks//用户上传动态组件列表 │ │ │ ├── One//组件1 │ │ │ │ └── One.php//自动挂载到事件、回调 │ │ │ ├── Three//组件2 │ │ │ │ └── Three.php │ │ │ └── Two//组件3 │ │ │ └── Two.php │ │ ├── init.php//平台运行初始化 │ │ ├── library//admin平台运行私有类库 │ │ ├── models//模型 CRUD │ │ │ ├── Abstract.php//抽象层封装 │ │ │ ├── Acl//RBAC权限体系 │ │ │ │ ├── Group.php//用户组 │ │ │ │ ├── Index.php//列表 │ │ │ │ ├── Resource.php//资源 │ │ │ │ ├── Role.php//角色 │ │ │ │ └── User.php//用户 │ │ │ ├── App.php//多平台 │ │ │ ├── Config.php//云端配置 │ │ │ ├── Hook//用户上传动态组件 │ │ │ │ ├── Index.php//事件 │ │ │ │ └── Module.php//组件 │ │ │ ├── Lang.php//多语言 │ │ │ ├── Manager.php//超级管理员 │ │ │ ├── Menu.php//菜单 │ │ │ ├── Theme.php//模板 │ │ │ ├── Translation.php//远程智能翻译 │ │ │ └── User//多用户 │ │ │ └── Index.php//列表 │ │ ├── modules//应用列表 下面每1个文件夹都是1个应用,应用可以随意在平台间智能复制共享 │ │ │ ├── Api//【应用1】API服务 遵循RESTful规范 功能同上述 控制器 中目录、文件介绍 一一对应 │ │ │ │ └── controllers │ │ │ │ ├── Acl │ │ │ │ │ ├── Group.php │ │ │ │ │ ├── Index.php │ │ │ │ │ ├── Resource.php │ │ │ │ │ ├── Role.php │ │ │ │ │ └── User.php │ │ │ │ ├── App.php │ │ │ │ ├── Config.php │ │ │ │ ├── Hook │ │ │ │ │ ├── Index.php │ │ │ │ │ └── Module.php │ │ │ │ ├── Lang.php │ │ │ │ ├── Manager.php │ │ │ │ ├── Menu.php │ │ │ │ ├── Translation.php │ │ │ │ └── User │ │ │ │ └── Index.php │ │ │ ├── Cart//【应用2】购物车 │ │ │ │ ├── controllers │ │ │ │ │ └── Index.php │ │ │ │ └── views │ │ │ │ └── default │ │ │ │ └── index │ │ │ │ └── index.phtml │ │ │ ├── Order//【应用3】订单系统 │ │ │ │ ├── controllers │ │ │ │ │ └── Index.php │ │ │ │ └── views │ │ │ │ └── default │ │ │ │ └── index │ │ │ │ └── index.phtml │ │ │ └── Payment//【应用4】支付网关 │ │ │ ├── controllers │ │ │ │ └── Index.php │ │ │ └── views │ │ │ └── default │ │ │ └── index │ │ │ └── index.phtml │ │ ├── plugins//插件 │ │ │ └── Hook.php//每个插件行为一一映射到事件 │ │ └── views//视图 支持多终端手机、PC、Ipad...设备、分辨率,风格自适应(通过Bootstrap实现) │ │ └── default//【模板1】默认模板 │ │ ├── bottom.phtml//通用底部 │ │ ├── error//通用底部 │ │ │ └── error.phtml │ │ ├── index//通用首页 │ │ │ └── index.phtml │ │ └── top.phtml//通用头部 │ ├── erp//【平台2】下属目录功能 同【平台1】 │ │ ├── bin │ │ │ └── install.php │ │ ├── Bootstrap.php │ │ ├── controllers │ │ │ ├── Abstract.php │ │ │ ├── Error.php │ │ │ └── Index.php │ │ ├── init.php │ │ ├── plugins │ │ │ └── Hook.php │ │ └── views │ │ └── default │ │ ├── bottom.phtml │ │ ├── error │ │ │ └── error.phtml │ │ ├── index │ │ │ └── index.phtml │ │ └── top.phtml │ └── paas//【平台3】下属目录功能 同【平台1】 │ ├── bin │ │ └── install.php │ ├── Bootstrap.php │ ├── controllers │ │ ├── Abstract.php │ │ ├── Error.php │ │ └── Index.php │ ├── init.php │ ├── plugins │ │ └── Hook.php │ └── views │ └── default │ ├── bottom.phtml │ ├── error │ │ └── error.phtml │ ├── index │ │ └── index.phtml │ └── top.phtml ├── conf//系统常量 常驻内存(通过Yaconf实现) │ ├── admin_lang_1.ini//admin平台中文语言包 │ ├── admin_product.ini//admin平台生产配置【DB、常用正则、秘钥...】 │ ├── admin_table.ini//admin平台表结构单机缓存静态化 │ ├── erp_lang_1.ini//erp平台中文语言包 │ ├── erp_product.ini//erp平台生产配置【DB、常用正则、秘钥...】 │ ├── erp_table.ini//erp平台表结构单机缓存静态化 │ ├── paas_lang_1.ini//paas平台中文语言包 │ ├── paas_product.ini//paas平台生产配置【DB、常用正则、秘钥...】 │ ├── paas_table.ini//paas平台表结构单机缓存静态化 │ └── pinyin.ini//平台通用汉字转拼音服务 ├── log//平台日志(通过SeasLog实现) │ ├── default//常规日志 │ └── user//用户行为日志 ├── public//系统单入口,下属admin、erp、paas与上述app下属文件夹一一对应,此处可以对应绑定域名 支持多域名配置 │ ├── admin//www.admin.com │ │ ├── assets//前端资源文件(通过Nginx UPS、Varnish 实现CDN、动静分离 HTTP Cache) │ │ ├── index.php//单入口文件 │ │ ├── robots.txt//SEO蜘蛛爬取规则 │ │ └── sitemap.xml//站点地图生成 优化SEO │ ├── erp//www.erp.com │ │ ├── index.php │ │ ├── robots.txt │ │ └── sitemap.xml │ └── paas//www.paas.com │ ├── index.php │ ├── robots.txt │ └── sitemap.xml └── vendor//平台公共类库 ├── Hook//【类库1】系统默认 │ ├── Batch//批量处理类 │ │ ├── Insert.php │ │ └── Process.php │ ├── Cache//全局单例、缓存类 │ │ └── Cache.php │ ├── Crypt//加密、解密类 │ │ ├── PassWord.php │ │ └── Rijndael.php │ ├── Data//大数据处理类 │ │ └── ArrayUtils.php │ ├── Date//日期控件类 │ │ └── Calendar.php │ ├── Db//DB操作类 │ │ ├── MongoConnect.php │ │ ├── Orm.php │ │ ├── PdoConnect.php │ │ └── RedisConnect.php │ ├── Extract//压缩包在线解压类 │ │ ├── AbstractAdapter.php │ │ ├── ExtractInterface.php │ │ ├── Extract.php │ │ ├── RarAdapter.php │ │ └── ZipAdapter.php │ ├── File//文件类 │ │ └── File.php │ ├── Form//表单类 │ │ └── Form.php │ ├── Hook//组件类 │ │ ├── Hook.php//事件管控类 │ │ └── Module.php//组件管控类 │ ├── Http//Http处理类 │ │ ├── Curl.php │ │ └── Header.php │ ├── Image//图片处理类 │ │ └── Image.php │ ├── Paginator//分页类 │ │ └── Paginator.php │ ├── Sql//SQL集中化管控 │ │ ├── Acl.php │ │ ├── App.php │ │ ├── Hook.php │ │ ├── Install.php │ │ ├── Login.php │ │ ├── Menu.php │ │ ├── Module.php │ │ └── Table.php │ ├── Tika//文件内容提取类(通过Tika实现) │ │ └── Tika.php │ ├── Tools//常用工具类 │ │ └── Tools.php │ ├── Translation//多语言远程智能翻译服务 │ │ ├── AbstractAdapter.php │ │ ├── BaiduAdapter.php │ │ ├── BingAdapter.php │ │ ├── GoogleAdapter.php │ │ ├── TranslationInterface.php │ │ └── Translation.php │ └── Validate//验证类 │ └── Validate.php ├── mongodb//【类库2】外部Composer引入 │ └── mongodb ├── phpmailer//【类库3】外部Composer引入 │ └── phpmailer └── symfony//【类库4】外部Composer引入 └── process
sudo apt-get install php7.3-common php7.3-cli php7.3-bcmath php7.3-dev php7.3-xml php7.3-opcache php7.3-mbstring php7.3-mysql php7.3-fpm php7.3-gd php7.3-zip php7.3-curl php7.3-intl php7.3-json
sudo pecl install yaf [yaf] extension=yaf yaf.use_namespace = 1 yaf.use_spl_autoload = 1 yaf.library = /home/letwang/workspace/HookPHP/vendor/
sudo pecl install yaconf [yaconf] extension=yaconf yaconf.directory = /home/letwang/workspace/HookPHP/conf/
sudo pecl install grpc [grpc] extension=grpc
sudo pecl install seaslog [seaslog] extension=seaslog seaslog.trace_notice=1 seaslog.trace_warning=1 seaslog.default_basepath='/home/letwang/workspace/HookPHP/log' seaslog.default_template = '%T | %L | %P | %Q | %t | %M | %H | %D | %R | %m | %I | %F | %U | %u | %C'
git clone https://github.com/longxinH/xhprof.git ./xhprof cd xhprof/extension/ phpize7.3 ./configure --with-php-config=php-config7.3 make && sudo make install sudo apt-get install graphviz-dev [xhprof] extension=xhprof xhprof.output_dir = '/var/log/xhprof'
sudo pecl install rar [rar] extension=rar
[Session] session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379?weight=1&auth=123456&database=0, tcp://127.0.0.1:6379?weight=2&auth=123456&database=0"
sudo vim /etc/hosts 127.0.0.1 www.admin.com 127.0.0.1 www.erp.com 127.0.0.1 www.paas.com
server { listen 80; root /home/letwang/workspace/HookPHP/public/admin/; index index.html index.htm index.php; error_log /var/log/nginx/www.admin.com-error.log error;access_log /var/log/nginx/www.admin.com-access.log combined; server_name www.admin.com; if (!-e $request_filename) {rewrite ^/(.*) /index.php?$1 last;} location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } server { listen 80; root /home/letwang/workspace/HookPHP/public/erp/; index index.html index.htm index.php; error_log /var/log/nginx/www.erp.com-error.log error;access_log /var/log/nginx/www.erp.com-access.log combined; server_name www.erp.com; if (!-e $request_filename) {rewrite ^/(.*) /index.php?$1 last;} location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } server { listen 80; root /home/letwang/workspace/HookPHP/public/paas/; index index.html index.htm index.php; error_log /var/log/nginx/www.paas.com-error.log error;access_log /var/log/nginx/www.paas.com-access.log combined; server_name www.paas.com; if (!-e $request_filename) {rewrite ^/(.*) /index.php?$1 last;} location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
wget https://github.com/sysown/proxysql/releases/download/v1.4.12/proxysql_1.4.12-ubuntu16_amd64.deb sudo dpkg -i proxysql_1.4.12-ubuntu16_amd64.deb
sudo pecl install redis [redis] extension=redis
linux/)
sudo pecl install mongodb [mongodb] extension=mongodb
cluster-components/)【可选】
sudo apt-get install erlang-nox wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.8/rabbitmq-server_3.7.8-1_all.deb sudo rabbitmq-server start sudo rabbitmqctl status sudo rabbitmq-plugins enable rabbitmq_management
wget https://github.com/alanxz/rabbitmq-c/archive/v0.9.0.zip cd rabbitmq-c-0.9.0 mkdir build && cd build cmake .. cmake --build . cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. cmake --build . --target install sudo pecl install amqp [amqp] extension=amqp.so amqp.login=admin amqp.password=12345678
wget -P /home/sphinx http://sphinxsearch.com/files/sphinx-3.0.3-facc3fb-linux-amd64.tar.gz
curl -L https://packagecloud.io/varnishcache/varnish61/gpgkey | sudo apt-key add - echo "deb https://packagecloud.io/varnishcache/varnish61/ubuntu/ xenial main\ndeb-src https://packagecloud.io/varnishcache/varnish61/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/varnishcache_varnish61.list sudo apt-get update sudo apt-get install varnish sudo apt-get install libvarnishapi1 sudo apt-get install libvarnishapi-dev sudo pecl install varnish [varnish] extension=varnish
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer
wget -P /home/letwang/workspace/HookPHP/vendor/Hook/Tika http://mirrors.hust.edu.cn/apache/tika/tika-app-1.19.1.jar
cd ~/workspace/HookPHP/ sudo chmod 777 -R ./log composer.phar install php app/admin/bin/install.php php app/erp/bin/install.php php app/paas/bin/install.php
http://www.admin.com/ http://www.erp.com/ http://www.paas.com/ admin@hookphp.com 12345678
目前只集成
admin 中心管控统一后台,目前重点开发中…
paas PAAS系统
erp ERP系统
每个域名绑定好平台单入口,可以建设众多平台。
目前HookPHP还未发布stable 0.1版本,虽然有众多用户焦急的催促等待我,但我心目中的stable 0.1版本至少应该可以达到:在线创建平台、在线建模、在线生成MVC,初步达到AI在线编程,代码生产代码的可用版本。
当0.1 stable版本实现后,HookPHP基石应该初步落地,接下来开发天猫、亚马逊这种多用户商城0.1版。
以后,众多第三方厂商(个人、组织、企业)将会以提供HookPHP组件开发、模板开发、定制服务为荣,实现 开发者、用户、HookPHP官方 等多方双赢局面。
路 还很长,我 还很年轻,生命不息 战斗不止 做点有意义的事情 加油!