
phalcon
文章平均质量分 61
狂奔的蜗牛zy
非淡泊无以明志,非宁静无以致远
展开
-
windows下更改Apache以fastcgi方式运行php
最近在用phalcon3.3框架,本地环境是wampserver,选的是php7.0版本,在项目中发现使用curl请求本项目其他接口或者其他项目接口均报错,切换成php5.6版本则可以正常请求,试了很多方法都没办法解决。突然想到Apache默认是用自己的php模块处理的,会不会是因为这个原因。于是尝试把Apache切换以fastcgi方式运行。 报的错误是:Error: Access t...原创 2018-05-01 20:57:13 · 2144 阅读 · 5 评论 -
Phalcon搭建多模块框架二十六:设置开发环境、测试环境、生产环境配置文件
在项目开发维护中,一般情况下会有三种环境,分别是开发环境、测试环境、生产环境。开发通常在本地开发,调试好了发布到测试环境由测试人员测试。测试用过后适时发布到生产环境。所以一般需要有三套配置文件。我喜欢分别命名为config_dev.php(开发环境配置)、config_test.php(测试环境配置)、config_pro.php(生产环境配置)。 1、将原来config下的config.p...原创 2018-06-11 22:56:17 · 1276 阅读 · 0 评论 -
Phalcon搭建多模块框架二十一:注册视图缓存服务
对于数据不经常变化,却经常访问的页面,我们可以把页面缓存,减少系统开销。 1、打开config/config.php添加view_cache配置'view_cache' => [ 'frontend' => [ 'adapter' => 'output', 'lifetime' => 86400 ], '...原创 2018-06-04 23:02:09 · 401 阅读 · 0 评论 -
Phalcon搭建多模块框架十四:封装转发到其他控制器/动作(forward)
我觉得官方的forward不好用,所以对它进行了封装。 1、打开common下的BaseController.php文件 添加:final protected function forward($url, $vars = null, $namespace = null) { if (is_array($url)) { $forward = $...原创 2018-05-24 22:44:41 · 695 阅读 · 2 评论 -
Phalcon搭建多模块框架十七:注册cookie服务
cookie在开发中也会用到,如果明文存储不是很安全,所以可以对其加密来增强安全性。需要注意的是,phalcon中cookie使用加密时,须先对crypt服务设置key值(秘钥)。 1、打开config/config.php添加如下代码'cookies' => [ // 是否使用加密,使用加密必须要设置crypt 的key值 'use_encryption' =&...原创 2018-05-29 21:57:05 · 471 阅读 · 0 评论 -
Phalcon搭建多模块框架二十七:创建后台(admin)模块
对一般项目来说,一个项目通常有后台模块(admin)、前台模块(home)、app的接口模块(api),有的可能还有微信公众号模块(wx?wechat?)。我们这个框架的终极目标是多模块框架,之前一直在home模块下测试配置,现在基本配置已经完成了,可以很方便的新增一个后台模块(admin)。 1、打开入口文件public/index.php 将MODULE_ALLOW_LIST常量增加一...原创 2018-06-12 20:43:45 · 1481 阅读 · 2 评论 -
Phalcon搭建多模块框架二十二:注册url服务
Phalcon\Mvc\Url 组件负责在Phalcon应用内生成URL。它依赖路由生成独立的URL。我们可以对它进行配置,从而在项目中更好的生成url。 1、打开config/config.php,添加如下配置'url' => [ 'base_uri' => '/', 'static_base_uri' => '/', 'base_path' ...原创 2018-06-06 21:44:20 · 635 阅读 · 0 评论 -
Phalcon搭建多模块框架三十二:完整的框架代码(改进版)
本来准备引入smarty模板引擎的,但发现怎么引入都不合理,也不利于扩展。同时之前一直处于边学习边搭建,有的地方不是很合理,所以对代码进行了优化。 下面根据下图顺序贴出框架完整代码。 1、public/index.php,这是web入口文件<?php/** * @desc 入口文件 * @author zhaoyang * @date 2018年5月3日 下午5:16:2...原创 2018-06-21 15:19:46 · 1340 阅读 · 5 评论 -
Phalcon搭建多模块框架三十三:创建smarty模板引擎适配器并注册smarty引擎服务
在前面我们有提到phalcon可以整合第三方视图模板引擎,例如smarty。虽然phalcon提供了强大的用C写的volt模板引擎,但我还是尝试让它支持smarty。 1、在library目录下创建vendors目录用来存放第三方包的。在vendors创建smarty目录,并将下载的smarty包放入。 2、在library目录下创建adapter目录用来存放创建的适配器。 在adapt...原创 2018-06-22 00:01:03 · 688 阅读 · 0 评论 -
Phalcon搭建多模块框架十八:注册缓存服务及修改session服务
phalcon缓存支持多种数据格式和多种存储方式。可以很方便的对数据进行缓存。 1、打开config/config.php添加如下配置'cache' => [ 'frontend' => [ // 数据处理方式,支持data(序列化)、json、base64、none、output、igbinary、msgpack 'data' =...原创 2018-05-31 21:41:04 · 893 阅读 · 0 评论 -
Phalcon搭建多模块框架二十八:封装curl工具类并模拟api接口请求与响应
在开发中经常会需要写接口给别人调用或者调用别人的接口,通常使用http post发送json格式数据,响应也往往是json格式数据。除了必要的签名,有时候为了数据安全还需要对数据进行对称或非对称加密。这里我们只是模拟post请求发送和响应json格式数据。 1、在library/tools下创建HttpCurl.php工具类<?php/** * @desc curl工具类...原创 2018-06-14 22:41:33 · 913 阅读 · 0 评论 -
Phalcon搭建多模块框架二十三:注册flash和flashSession服务
通常做一个操作会通知用户当前操作的状态。这就用到了Flashing Messages。 flash和flashSession最大的区别就是,flashSession会将消息存储在session中。 通过下面的例子就会很清楚的知道二者的区别。 1、打开config/config.php,添加如下'flash' => [ // 消息class属性值 'css_c...原创 2018-06-09 22:01:38 · 684 阅读 · 0 评论 -
Phalcon搭建多模块框架二十四:注册security服务并模拟登录
使用Security可以将密码散列、防止跨站点请求伪造攻击、防表单重复提交等。 1、打开config/config.php,添加'security' => [ // 设置由openssl伪随机生成器生成的字节数 'random_bytes' => 16, // 设置默认hash,0=7(CRYPT_BLOWFISH_Y),1(CRYPT_STD_D...原创 2018-06-10 02:43:19 · 1063 阅读 · 0 评论 -
Phalcon搭建多模块框架二十五:处理程序异常信息
由于程序在运行过程中往往会因为一些已知或者未知的错误导致异常,所以需要对这些异常进行处理。生产环境的异常我们不希望被用户看到,所以一般写入文件中。开发阶段往往直接打印出异常或者写到日志文件中调试。 1、打开config/config.php,添加'application' => [ 'debug' => [ 'state' => false, ...原创 2018-06-10 21:34:10 · 1413 阅读 · 0 评论 -
Phalcon搭建多模块框架二十九:创建多模块命令行应用
前二十八篇文章已经创建了一个完整的web多模块应用,但项目中往往会用到一些需要在后台执行的脚本,这就用到了命令行应用(CLI应用)。这样就可以很方便的在脚本中使用很多服务。 phalcon的命令行应用与web应用相似,分为单模块和多模块。这次创建的是多模块命令行应用。 1、为了代码复用性,我们需要对public/index.php进行修改,将定义常量单独提取出来,放入define.php文...原创 2018-06-18 18:55:29 · 1152 阅读 · 0 评论 -
Phalcon搭建多模块框架三十:创建单模块命令行应用
Phalcon搭建多模块框架二十九是创建多模块命令行应用,但有时候项目很小,可能命令行应用只有几个文件不需要分模块。这个时候单模块就很方便。 在开始之前还是需要用到二十九中的前两步,创建define.php文件。 1、在cli目录下创建cli.php文件<?php/** * @desc 命令行入口文件 * @author: ZhaoYang * @date: 2018年6...原创 2018-06-18 21:58:57 · 827 阅读 · 0 评论 -
Phalcon搭建多模块框架三十一:数据库读写分离
phalcon除了可以设置不同模型连接不同的数据库还可以设置数据库读写分离。下面就说说怎么使用主从设置。 1、修改config下的配置文件(三种模式下的配置文件) 修改'db' => [ // 是否记录执行的mysql语句 'logged' => true, // 记录执行时间超过0秒的mysql语句 'max_execute_time...原创 2018-06-19 23:06:23 · 1126 阅读 · 0 评论 -
Phalcon搭建多模块框架十六:注册加密服务
在应用中经常会使用到加密,尤其是接口交互,为了保证数据安全,通常需要对传输的数据进行签名和加密。 1、打开config/config.php,添加如下代码'crypt' => [ // 加密秘钥 'key' => DEFAULT_MODULE, // 填充方式,默认是0(PADDING_DEFAULT),1(PADDING_ANSI_X_923)、2(...原创 2018-05-28 22:27:46 · 457 阅读 · 2 评论 -
Phalcon搭建多模块框架二十:注册modelsCache(模型缓存)服务
为了减轻数据库压力,提高系统性能,常常需要将不常变动的数据缓存起来。 1、打开config/config.php添加如下配置'models_cache' => [ 'frontend' => [ 'adapter' => 'data', 'lifetime' => 86400 ], 'backend' ...原创 2018-06-03 20:27:23 · 1107 阅读 · 0 评论 -
Phalcon搭建多模块框架十五:注册session服务
phalcon提供了总共四种session适配器,分别是files、memcache、redis、libmemcached,数据默认都是序列化存储。 1、打开config/config.php 全局默认使用file适配器 添加如下代码:'session' => [ // 是否自动开启 SESSION 'auto_start' => true, '...原创 2018-05-27 18:56:36 · 2059 阅读 · 0 评论 -
Phalcon搭建多模块框架六:组合和过滤get参数
有时候我们会有类似http://phalcon.com/filter/get/key1/value1/key2/value2?key3=value3&amp;amp;amp;key4=value4这样的请求。而在控制器中通过$this-&amp;amp;gt;dispatcher-&amp;amp;gt;getParams()只能获取到key1和key2的值,并且是未过滤的。通过$this-&amp;amp;gt;request-&am原创 2018-05-08 23:14:29 · 1150 阅读 · 0 评论 -
centos下安装phalcon
安装phalcon3.3由于安装phalcon需要用到re2c词法解析器,所以先安装re2c: 1、前往https://jaist.dl.sourceforge.net/project/re2c/选择版本下载(目前只能使用0.13.4及更低版本)wget https://jaist.dl.sourceforge.net/project/re2c/old/re2c-0.13.4.tar.g...原创 2018-05-02 17:27:08 · 2491 阅读 · 0 评论 -
Phalcon搭建多模块框架七:封装和过滤post、request、json(input流获取)参数
在phalcon在控制器中获取以下数据:post数据是通过$this-&gt;request-&gt;getPost()来获取的,查看源码可以看到获取单个值时如果设置了过滤参数就会进行过滤,但是获取全部值时(即不传第一个参数$name)是不进行过滤,直接返回的($_POST)。request数据是通过$this-&gt;request-&gt;get()来获取的,过滤机制同上面一样。j...原创 2018-05-10 00:18:23 · 2393 阅读 · 0 评论 -
Phalcon搭建多模块框架十一:在模型中使用验证器
很多时候插入和修改的时候必须要对数据进行验证,下面就介绍如何在模型中使用验证器。 1、打开app/home/models/Robots.php模型,这里面使用到的$this->getDI()->getValidate()是获取validate服务,必须先在服务中注册,否则只能使用$validate = new Validate(); $validate = $validate-&...原创 2018-05-16 23:35:28 · 802 阅读 · 0 评论 -
Phalcon搭建多模块框架一:定义基本目录结构和基本配置
前言:入职新公司,公司使用的是Phalcon框架,以前没接触过,看公司的项目都是单模块,并且写的很乱(例如在控制器文件中使用require来引入model文件,在控制器文件写函数等)所以想自己搭建一套多模块框架,学习途径主要是官方文档和cphalcon源码,由于是初次学习使用该框架,所以难免有错误和不合理的地方,欢迎指正。Phalcon是高性能低耦合的框架,你可以根据自己的喜好搭建不同的目录结...原创 2018-05-04 00:42:31 · 3158 阅读 · 3 评论 -
重写apache和nginx的url规则,适用于Phalcon
apache重写rul规则: 在public目录下创建.htaccess文件<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.*\.php)/((?s).*)$ $1?_url=/$2 [QSA,L] Rewri...原创 2018-05-04 01:18:15 · 989 阅读 · 0 评论 -
Phalcon搭建多模块框架二:注册视图引擎及简单使用
phalcon提供的两种视图引擎,一种是php,还有一种是volt,另外还支持自定义和第三方视图引擎。 下面将按下图标注顺序逐渐完成该功能。 1、打开config下面的全局配置文件config.php 定义volt引擎服务配置和view视图服务配置,这是全局默认配置。 这里配置以volt为扩展名的模板使用viewEngineVolt引擎服务,以phtml为扩展名的模板使用viewEng...原创 2018-05-05 00:40:54 · 1137 阅读 · 2 评论 -
Phalcon搭建多模块框架三:扩展volt模板引擎
volt模板引擎并不直接支持php函数,有时候我们会用到php函数进行输出过滤或者格式化,所以我们得对volt进行扩展。我们可以先做个测试: 在home模块下的ViewController.php控制器中创建一个indexAction()的方法。如下图所示: 在对应的视图目录下创建index.volt模板,如下图所示: 这个时候访问view/index就会报错。 下面就开始对v...原创 2018-05-05 21:24:49 · 798 阅读 · 0 评论 -
Phalcon搭建多模块框架八:增加验证器批量添加验证规则方法并在控制器中使用
我们经常写api接口,接收的参数需要经过过滤和验证才能使用。我们可以利用phalcon的验证器封装一个批量添加规则的。 1、在common下创建Validate.php文件<?php/** * @desc 验证器 * @author zhaoyang * @date 2018年5月11日 下午4:16:50 */namespace Common;use Ph...原创 2018-05-12 21:52:40 · 1601 阅读 · 0 评论 -
Phalcon搭建多模块框架四:创建调度器插件处理Not-Found
如果我们访问一个不存在的控制器或者方法时就会报错,所以我们必须对它进行处理。 例如我们访问不存在的控制器或方法,例如/test/test,就会看到如下错误。 下面我们开始处理Not-Found: 1、打开全局配置文件config/config.php 添加如下配置 完整config/config.php&amp;lt;?php/** * @desc 全局配置文件 * @au...原创 2018-05-07 01:14:34 · 1980 阅读 · 0 评论 -
Phalcon搭建多模块框架九:增加自定义验证器
phalcon提供的验证规则可能满足不了我们的需求,这时候我们可以增加验证规则。 下面我们开始添加一个18位居民身份证的验证器。 1、在library/validators下创建IDNumber.php文件&amp;lt;?php/** * @desc 中华人民共和国居民身份证(18位)校验 * @author zhaoyang * @date 2018年5月13日 下午7:27...原创 2019-11-10 14:25:28 · 868 阅读 · 2 评论 -
Phalcon搭建多模块框架十二:注册日志记录器服务及简单使用
phalcon提供了Phalcon\Logger\Adapter\File(保存日志到普通文件)、Phalcon\Logger\Adapter\Stream(保存日志到PHP流)、Phalcon\Logger\Adapter\Syslog(Phalcon\Logger\Adapter\Syslog)、Phalcon\Logger\Adapter\FirePHP(发送日志到FirePHP)等多种日志...原创 2018-05-19 23:09:38 · 856 阅读 · 4 评论 -
Phalcon搭建多模块框架十三:注册性能分析组件并创建性能分析插件分析SQL语句
产品上线运营一段时间后可能会出现性能瓶颈,这个时候需要对一些sql语句进行优化,所以需要记录那些语句需要优化。在这里我们创建一个插件用来记录这些语句。 1、打开config/config.php 修改:'db' =&gt; [ 'host' =&gt; 'localhost', 'port' =&gt; 3306, ...原创 2018-05-20 22:35:27 · 384 阅读 · 2 评论 -
Phalcon搭建多模块框架五:扩展调度器插件组合pathinfo模式参数
phalcon在控制器中获取pathinfo模式参数或者说是路由参数有三种方法: 第一种是利用控制器方法传参的形式,如下图 第二种利用调度器获得参数,调度器获得参数有两种,一种是获得单个参数,一种是获得全部参数,如下图所示 获取单个参数 获取全部参数 第三种是利用路由服务获取,如下图所示 其实通过查看源码可以发现调度器的参数也是来源于router中的getParams(...原创 2018-05-07 23:34:19 · 672 阅读 · 0 评论 -
Phalcon搭建多模块框架十:注册数据库服务及模型简单增删改查
首先创建一个数据库phalcon,然后创建一张表做测试。CREATE TABLE `ph_robots` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(70) NOT NULL, `type` tinyint(1) NOT NULL, `weight` int(11) NOT NULL, PR...原创 2018-05-14 23:45:04 · 686 阅读 · 0 评论 -
Phalcon搭建多模块框架十九:注册modelsMetadata服务
phalcon每次请求中第一次对模型操作时都会先去查询模型对应的表结构等相关元数据,类似于SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = 'ph_robots' AND `TABLE_SCHEMA` = DATABASE()DESCRIBE `ph_robot...原创 2018-06-02 23:14:18 · 1054 阅读 · 0 评论