本项目基于Phalcon的官方开发工具phalcon-devtools二次开发,根据实际开发需要,对原有模版进行了改进,并增加了若干常用API模版,利用这些模版可以大幅提升开发效率。
官方提供的模版没有将开发、测试、生产环境的配置文件分开,对于利用github公开方式托管代码的个人和小团队来说配置文件更涉及安全性,my-phalcon-devtools借助vlucas/phpdotenv
实现配置和代码分开,开发环境的.env开发人员自己管理,测试和生产环境的.env由专门的运维人员管理和发布。
时区默认设置为"中国-上海",避免时间混乱问题
根据.env中的APP_ENV设置(dev/test/production),production仅输出重要的日志,且日志默认输出到项目根目录下的logs文件夹,名称按APP_NAME和日期定义
可以利用README.md对项目功能、环境、部署等进行说明
- 取消webtools工具
- 取消ini支持
官方开发工具项目名称为project_name,选择"modules"应用类型时,顶层命名空间为Project_name,my-phalcon-devtools中改为ProjectName
官方开发工具为了降低初学者学习门槛,直接使用Phalcon\Di\FactoryDefault
容器,这个容器默认包含了22个服务;my-phalcon-devtools改为空的容器Phalcon\Di
,根据项目需求用到哪个服务注册哪个服务,最大程度降低占用,提升性能
通过这个日志,你可以观察并统计数据请求类型以及耗时状况,帮助你随时发现数据库请求瓶颈并及时进行优化
默认生产环境使用Redis缓存metadata,其他环境则使用Memcache(仅当次请求周期内有效,Phalcon自带,不需要单独安装)
- 这两个字段在每个数据表中都必须存在,且按如下定义
created_at datetime comment '创建时间', updated_at timestamp comment '更新时间',
- phalcon命令执行时.env还没有生效,故用phalcon命令创建model前需修改config.php中数据库设置默认值为当前开发环境实际值,如下面的代码片段
'database' => [ 'adapter' => 'Mysql', 'host' => getenv('DB_HOST') ?: 'localhost', 'username' => getenv('DB_USERNAME') ?: 'root', 'password' => getenv('DB_PASSWORD') ?: 'test123456', 'dbname' => getenv('DB_DATABASE') ?: 'database', 'charset' => 'utf8', ],
- 使用phalcon命令创建模型时,一定要使用
--excludefields=udated_at
参数 - 按照如上设置后,插入数据时created_at和updated_at将自动生成,created_at是通过工具生成model的以下代码实现
public function initialize() { $this->setSchema("qin_user"); $this->setSource("user"); $this->hasMany('id', 'Child', 'user_id', ['alias' => 'Child']); // created_at必须为nullable=true $this->addBehavior( new \Phalcon\Mvc\Model\Behavior\Timestampable( [ 'beforeCreate' => [ 'field' => 'created_at', 'format'=> 'Y-m-d H:i:s', ] ] ) ); }
鉴于Mysql流行程度以及为了代码简洁度,项目模版仅绑定了Mysql。但开发者随时可以更换为自己喜欢的其他数据库。
- cli
- microweb
- web
- baseapi
API类项目模版都采用了Phalcon提供的MVC微应用框架(Phalcon/Mvc/Micro),适合于瘦应用,很少的代码即可实现强大的功能。
去除了所有与前端有关的代码,包括css, js和 view 相关的代码,并根据需求提供了多个不同用途的API项目模版供选用,最简单的项目你仅需添加几行代码即可实现
提供了统一的json输出方法(包括错误和异常状况下的输出)和输出状态配置文件。输出格式为:
{
code: 0,
status: 'ok',
detail: [
{
'user_id': 1,
'user_name': 'david',
'sex': 1,
'age': 13
},
{
'user_id': 2,
'user_name': 'tom',
'sex': 2,
'age': 13
}
]
}
- simpleapi
- baseapi
- fullapi
- jQuery 升级为3.2.1
- Bootstrap 升级为4.0.0-beta2
- VoltEngine
- PhpEngine
- Smarty (后续增加)
- microweb
- web
适合开发命令行应用,如爬虫、后台处理等
适合开发微网站,如官网、微信小程序等
适合开发功能完整的网站
适合开发不使用数据库的简单API,如文件请求、搜索引擎等的封装接口
适合开发封装底层数据库访问的基础API
适合开发直接为客户端提供服务的中间API
适合开发多模块的复杂应用,目前提供一个CLI模块和一个前端站点模块,可以通过phalcon的模块命令添加新模块
- PHP >= 7.0
- Phalcon >= 3.2.0
- Composer
- 操作系统:Linux
- Web服务器:Nginx + PHP-FPM 7.0+
- Phalcon >= 3.2.0
- 数据库:MySQL
- 缓存和Session:Redis
# 以下配置可用于linux和macOS
# 第一步:下载my-phalcon-devtools到指定目录,如/home/myname/public
cd /home/myname/public;
git clone git@github.com:yinxingping/my-phalcon-devtools.git
# 第二步:配置~/.bashrc,添加以下项
export PTOOLSPATH=/home/myname/public/my-phalcon-devtools
export PATH=$PTOOLSPATH:$PATH
# 第三步:保存~/.bashrc后使设置生效
source ~/.bashrc
# 第四步:验证
cd /home/myname/Workspace;
phalcon project my_first_phalcon microweb
看到绿色的"Success: Project 'my_first_phalcon' was successfully created..."即表示成功。
phalcon-devtools原项目地址: https://github.com/phalcon/phalcon-devtools
phalcon官网: https://phalconphp.com