HookPHP一款基于C扩展搭建支持AI在线编程的PHP框架-安全秒杀Thin
前言众所周知,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框架! 理念配置即产出,所想即所得。 使命解决企业启动新项目时的重复劳动问题。 架构图特点基于C系扩展搭建基于PHP强大的WEB迅速开发能力,性能瓶颈用C扩展解决,后期如果业务需要不排除PHPshell_exec调用GO来支持天然并发. SQL中台集中管控既避免业务代码中到处零散的SQL拼接,也避免ORM极差的性能瓶颈,业务SQL统一定义,一处定义多处随意使用。既方便SQL安全审计,又方便DBA建模、升级、优化。 集成业务通用基础组件用户管理、资源管理、角色管理、权限管理、配置管理、翻译管理、SEO管理、多菜单管理、多语言管理、多模块管理、多模板管理、多终端管理、多平台管理… 集成行业主流特性微服务、多线程、多进程、常驻内存、主从分离、负载均衡… 支持组件在线管控用户自主上传组件 在线达到组件 安装、卸载、启用、禁用、排序、移动、归类… 支持多模板根据节假日等不同规则动态显示自定义模板,在线任意选择模板显示风格 支持多平台PAAS、ERP、电商、博客、官网 等众多平台,可以部署到一台服务器,共享类库、session、文件… 支持多域名平台对应绑定独立域名或子域映射到对应平台 支持多终端默认Bootstrap模板,多终端(手机、PC、Ipad…)设备、分辨率,风格自适应 支持多语言国际化语言支持,中文、英语、俄语、西班牙语… 一键安装傻瓜式部署,一键初始化系统 云端管控通过总admin后台,管控各大平台配置 常驻内存随PHP服务器启动,业务信息常驻内存 加速PHP 权限体系集成强大的RBAC体系,后台一键配置立即生效。 APIRESTfulAPI支持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 架构PHP 7.3sudo 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 C ExtensionsYafsudo pecl install yaf [yaf] extension=yaf yaf.use_namespace = 1 yaf.use_spl_autoload = 1 yaf.library = /home/letwang/workspace/HookPHP/vendor/ Yaconfsudo pecl install yaconf [yaconf] extension=yaconf yaconf.directory = /home/letwang/workspace/HookPHP/conf/ gRPC【可选】sudo pecl install grpc [grpc] extension=grpc SeasLog【可选】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' Xhprof【可选】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' Rar【可选】sudo pecl install rar [rar] extension=rar php.ini【可选】[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" hostssudo vim /etc/hosts 127.0.0.1 www.admin.com 127.0.0.1 www.erp.com 127.0.0.1 www.paas.com Nginx 1.15.5server { 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; } } MySQL 8.0.12ProxySQL【可选】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 Redis 5.0RedisProxy【可选】sudo pecl install redis [redis] extension=redis MongoDB 4.2sudo pecl install mongodb [mongodb] extension=mongodb MongoDB Sharded Cluster【可选】RabbitMQ 3.7.8【可选】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 AMQP【可选】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 Sphinx 3.0.3【可选】wget -P /home/sphinx http://sphinxsearch.com/files/sphinx-3.0.3-facc3fb-linux-amd64.tar.gz Varnish 6.1.0【可选】curl -L https://packagecloud.io/varnishcache/varnish61/gpgkey | sudo apt-key add - echo "deb https://packagecloud.io/varnishcache/varnish61/ubuntu/ xenial mainndeb-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 Composercurl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer Tika【可选】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还未发布releases 0.1版本,虽然有众多用户焦急的催促等待我,但我心目中的releases 0.1版本至少应该可以达到:在线创建平台、在线建模、在线生成MVC,初步达到AI在线编程,代码生产代码的可用版本。 当0.1版本实现后,HookPHP基石应该初步落地,接下来开发天猫、亚马逊这种多用户商城0.1版。 路 还很长,我 还很年轻,生命不息 战斗不止 做点有意义的事情 加油! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |