众所周知,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
sudo pecl install mongodb [mongodb] extension=mongodb
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官方 等多方双赢局面。
路 还很长,我 还很年轻,生命不息 战斗不止 做点有意义的事情 加油!
PHP 源码 Source Insight 相关资料 Extending and Embedding PHP PHP Internals Book 深入理解PHP内核 PHP扩展开发及内核应用 Laruence 鸟哥博客
本章着眼于从Python访问C代码的问题。许多Python内置库是用C写的, 访问C是让Python的对现有库进行交互一个重要的组成部分。 这也是一个当你面临从Python 2 到 Python 3扩展代码的问题。 虽然Python提供了一个广泛的编程API,实际上有很多方法来处理C的代码。 相比试图给出对于每一个可能的工具或技术的详细参考, 我么采用的是是集中在一个小片段的C++代码,以及一些有
多亏这些改变,我们可以去创建自己的builder和代码块。我们已经在使用一些有趣的函数,比如with。如下简单的实现: inline fun <T> with(t: T, body: T.() -> Unit) { t.body() } 这个函数接收一个T类型的对象和一个被作为扩展函数的函数。它的实现仅仅是让这个对象去执行这个函数。因为第二个参数是一个函数,所以我们可以把它放在圆括号外面,所以我们
阅读《入门指南》和《概述》后,可以将该指南用作扩展组件和功能的概述。鼓励开发人员探索和扩展功能。 自定义扩展用户界面 Browser Actions 将图标,工具提示,徽章和弹出窗口添加到工具栏。 Commands 添加触发操作的键盘快捷键。 Context Menus 将 item 添加到 Google Chrome的上下文菜单。 Omnibox 将关键字功能添加到地址栏。 Override P
本文向大家介绍PHP扩展开发教程(总结),包括了PHP扩展开发教程(总结)的使用技巧和注意事项,需要的朋友参考一下 PHP是一种解释型的语言,对于用户而言,我们精心的控制内存意味着easier prototyping和更少的崩溃!当我们深入到内核之后,所有的安全防线都已经被越过,最终还是要依赖于真正有责任心的软件工程师来保证系统的稳定运行。 1、线程安全宏定义 在TSRM/TSRM.h文件中有如下
本文向大家介绍PHP扩展开发入门教程,包括了PHP扩展开发入门教程的使用技巧和注意事项,需要的朋友参考一下 PHP扩展开发 我准备在此系列博文中总结我有关PHP扩展开发的学习和感悟,力图简单清晰地描述在Linux系统下开发一个PHP扩展应该具备的最基本知识。水平较低,难免有错误,望指出。 准备工作 首先要获取一份PHP源码(可以从Github上签出,或者到官网上下载最新的稳定版),然后编译之。为了
本文向大家介绍IOS开发之路--C语言基础知识,包括了IOS开发之路--C语言基础知识的使用技巧和注意事项,需要的朋友参考一下 概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift 这么看下去还有大量的内容需要持续补充,但是今天我们从最基础的C语言开始,
本文向大家介绍php实现基于微信公众平台开发SDK(demo)扩展的方法,包括了php实现基于微信公众平台开发SDK(demo)扩展的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现基于微信公众平台开发SDK(demo)扩展的方法。分享给大家供大家参考。具体分析如下: 该扩展基于官方的微信公众平台SDK,这里只做了简单地封装,实现了一些基本的功能(如天气查询,翻译,自动聊天机