- 浏览: 832610 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xieye:
jetty插件有好几个版本,1.6,1.7,1.8
我选的是用 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
还有,
注:第2部分时,需要先安装jetty,我自己在安装过程 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
说明一下:实际使用中,导入时我并没有错误。2、我把eclips ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
其实还是有一些先决条件的。1是外部环境,2是进步是阶段性的(意 ...
(转载文章)如何愉悦起来:一位精神治疗师的见解 -
mandy_yanzi:
我都已经饿7天了坚持为了我的衣衣
身体健康的问题
方法1:官方文档的方式。
这是控制器:
public function indexAction()
{
$this->view->disable();
$eventsManager = new EventsManager();
$myComponent = new A1();
$eventsManager->attach('my-component', new SomeListen());
$myComponent->setEventsManager($eventsManager);
$myComponent->someTask();
}
这是组件,
<?php
namespace Learn_phalcon;
use Phalcon\Events\EventsAwareInterface;
use Phalcon\Events\ManagerInterface;
class A1 implements EventsAwareInterface
{
protected $eventsManager;
public function setEventsManager(ManagerInterface $eventsManager)
{
$this->eventsManager = $eventsManager;
}
public function getEventsManager()
{
return $this->eventsManager;
}
public function getinfo(){
return "is A1";
}
public function someTask()
{
$this->eventsManager->fire('my-component:beforeSomeTask', $this);
echo 'Here, someTask<br>' ;
$this->eventsManager->fire('my-component:afterSomeTask', $this);
}
}
下面是监听器
<?php
namespace Learn_phalcon;
use Phalcon\Events\Event;
class SomeListen
{
public function beforeSomeTask(Event $event, $myComponent)
{
echo "Here, beforeSomeTask". $myComponent->getinfo() ."<br>\n";
}
public function afterSomeTask(Event $event, $myComponent)
{
echo "Here, afterSomeTask". $myComponent->getinfo()."<br>\n" ;
}
}
最终输出:
Here, beforeSomeTaskis A1
Here, someTask
Here, afterSomeTaskis A1
第2种方式,构造方法自定义:
监听器不变,控制器如下
public function index2Action()
{
$this->view->disable();
$myComponent = new A2();
$myComponent->someTask();
}
组件A2.php如下:
<?php
namespace Learn_phalcon;
use Phalcon\Events\EventsAwareInterface;
use Phalcon\Events\ManagerInterface;
use Phalcon\Events\Manager as EventsManager;
/*
* 此类本身包含
*
*/
class A2 implements EventsAwareInterface
{
public function __construct()
{
$eventsManager = new EventsManager();
$eventsManager->attach('my-component', new SomeListen());
$this->setEventsManager($eventsManager);
}
protected $eventsManager;
public function setEventsManager(ManagerInterface $eventsManager)
{
$this->eventsManager = $eventsManager;
}
public function getinfo(){
return "is A2";
}
public function getEventsManager()
{
return $this->eventsManager;
}
public function someTask()
{
$this->eventsManager->fire('my-component:beforeSomeTask', $this);
echo 'A2 is Here, someTask<br>\n';
$this->eventsManager->fire('my-component:afterSomeTask', $this);
}
}
效果如下:
Here, beforeSomeTaskis A2
A2 is Here, someTask
\nHere, afterSomeTaskis A2
第3种方式,自定义容器方式:
监听器不变,控制器如下:
public function index3Action()
{
$this->view->disable();
$myComponent = $this->getDi()->get('my_a3');
$myComponent->someTask();
}
组件和A1一样,只是类名改成A3:
此外,添加容器。 在项目初始化时。
$di->setShared('my_a3', function()use($di) {
$a3 = new \Learn_phalcon\A3();
$eventManager = new EventsManager();
$eventManager->attach('my-component:beforeSomeTask' , new \Learn_phalcon\SomeListen() );
$eventManager->attach('my-component:afterSomeTask' , new \Learn_phalcon\SomeListen() );
$a3->setEventsManager($eventManager);
return $a3;
});
效果如下:
Here, beforeSomeTaskis A3
A3 is Here, someTask
\nHere, afterSomeTaskis A3
总结
使用事件花样繁多,总有一款适合你。
另外,方式1 虽然最啰嗦,但有一个大好处,就是监听器可以获取当前运行环境的变量,放自己构造方法里。
而方式2 ,方式3,是预先定义的,于是没法写参数了。于是监听器就不好处理了。
只能放到组件里,可是这样,就有点耦合了。
这是控制器:
public function indexAction()
{
$this->view->disable();
$eventsManager = new EventsManager();
$myComponent = new A1();
$eventsManager->attach('my-component', new SomeListen());
$myComponent->setEventsManager($eventsManager);
$myComponent->someTask();
}
这是组件,
<?php
namespace Learn_phalcon;
use Phalcon\Events\EventsAwareInterface;
use Phalcon\Events\ManagerInterface;
class A1 implements EventsAwareInterface
{
protected $eventsManager;
public function setEventsManager(ManagerInterface $eventsManager)
{
$this->eventsManager = $eventsManager;
}
public function getEventsManager()
{
return $this->eventsManager;
}
public function getinfo(){
return "is A1";
}
public function someTask()
{
$this->eventsManager->fire('my-component:beforeSomeTask', $this);
echo 'Here, someTask<br>' ;
$this->eventsManager->fire('my-component:afterSomeTask', $this);
}
}
下面是监听器
<?php
namespace Learn_phalcon;
use Phalcon\Events\Event;
class SomeListen
{
public function beforeSomeTask(Event $event, $myComponent)
{
echo "Here, beforeSomeTask". $myComponent->getinfo() ."<br>\n";
}
public function afterSomeTask(Event $event, $myComponent)
{
echo "Here, afterSomeTask". $myComponent->getinfo()."<br>\n" ;
}
}
最终输出:
Here, beforeSomeTaskis A1
Here, someTask
Here, afterSomeTaskis A1
第2种方式,构造方法自定义:
监听器不变,控制器如下
public function index2Action()
{
$this->view->disable();
$myComponent = new A2();
$myComponent->someTask();
}
组件A2.php如下:
<?php
namespace Learn_phalcon;
use Phalcon\Events\EventsAwareInterface;
use Phalcon\Events\ManagerInterface;
use Phalcon\Events\Manager as EventsManager;
/*
* 此类本身包含
*
*/
class A2 implements EventsAwareInterface
{
public function __construct()
{
$eventsManager = new EventsManager();
$eventsManager->attach('my-component', new SomeListen());
$this->setEventsManager($eventsManager);
}
protected $eventsManager;
public function setEventsManager(ManagerInterface $eventsManager)
{
$this->eventsManager = $eventsManager;
}
public function getinfo(){
return "is A2";
}
public function getEventsManager()
{
return $this->eventsManager;
}
public function someTask()
{
$this->eventsManager->fire('my-component:beforeSomeTask', $this);
echo 'A2 is Here, someTask<br>\n';
$this->eventsManager->fire('my-component:afterSomeTask', $this);
}
}
效果如下:
Here, beforeSomeTaskis A2
A2 is Here, someTask
\nHere, afterSomeTaskis A2
第3种方式,自定义容器方式:
监听器不变,控制器如下:
public function index3Action()
{
$this->view->disable();
$myComponent = $this->getDi()->get('my_a3');
$myComponent->someTask();
}
组件和A1一样,只是类名改成A3:
此外,添加容器。 在项目初始化时。
$di->setShared('my_a3', function()use($di) {
$a3 = new \Learn_phalcon\A3();
$eventManager = new EventsManager();
$eventManager->attach('my-component:beforeSomeTask' , new \Learn_phalcon\SomeListen() );
$eventManager->attach('my-component:afterSomeTask' , new \Learn_phalcon\SomeListen() );
$a3->setEventsManager($eventManager);
return $a3;
});
效果如下:
Here, beforeSomeTaskis A3
A3 is Here, someTask
\nHere, afterSomeTaskis A3
总结
使用事件花样繁多,总有一款适合你。
另外,方式1 虽然最啰嗦,但有一个大好处,就是监听器可以获取当前运行环境的变量,放自己构造方法里。
而方式2 ,方式3,是预先定义的,于是没法写参数了。于是监听器就不好处理了。
只能放到组件里,可是这样,就有点耦合了。
发表评论
-
召唤神龙 - 安装 centos 8, php 8, mysql 8, laravel 8 的整套 php 运行环境
2020-11-27 16:26 689本文编写时间:2020-11-27 传说集齐龙珠可以召唤神 ... -
centos8 使用阿里镜像快速安装php7.4套件
2020-11-15 00:48 824centos8 使用阿里镜像快速安装php7.4套件 本文只 ... -
centos7 使用阿里镜像快速安装php7.4套件
2020-11-15 00:32 1234本文只考虑centos7 今日 2020-11-16 rem ... -
composer常用命令
2020-11-05 14:46 1459列出当前全局配置 composer config -l -g ... -
期待centos8+php8 + mysql8 + laravel8,8888
2020-10-29 19:24 500期待centos8+php8 + mysql8 目前主要使用 ... -
ubuntu 安装 php7.4以及各类插件
2020-10-24 13:20 1102ubuntu 安装 php7.4以及各类插件 安装系统 最近 ... -
宝塔定义站点
2020-02-24 10:41 2宝塔定义站点。 1111111111111111111111 ... -
让php-fpm以root账号运行
2020-02-19 21:41 818一般来说,我们没有这种需求,但是当需要时, 可以让php-fp ... -
将代码部署到coding.net
2020-01-10 14:20 639coding.net 是一个git仓库,有免费有收费。 首先 ... -
php部署工具deployer技巧 - vendor目录创建
2020-01-06 12:06 899deployer是个好东西,可是每次都composer ,其实 ... -
自定义redis多个实例
2020-01-04 01:17 647假如多个项目部署到同一台服务器,有时会被redis的各项目前缀 ... -
推荐使用php的部署工具 deployer
2020-01-03 16:48 894php部署代码可以使用 https://deployer.or ... -
使用composer 类库 cachetool 清除opcache 的缓存
2020-01-03 16:38 965php的生产服务器上,需要把opche打开。 但有时,会被缓 ... -
laravel容器学习体会
2019-12-31 15:11 660根据文档与实测结果 假设我在app下建一个Services目 ... -
phalcon 自定义超强日志类
2019-12-18 10:00 830phalcon自带的日志文件类,有两个麻烦之处。 1、路径不能 ... -
自定义后台的使用
2019-12-18 05:22 424如果自己写后台,保存用户的表单请求值 所有的情况如下: 1 ... -
phalcon对控制器返回值的使用以输出json
2019-12-16 19:17 824在phalcon里,控制器的Action的方法的返回值没啥用。 ... -
phalcon数据库DB使用实例
2019-12-12 17:12 699整理了一下phalcon的db使用,写了个demo。 ... -
php-redis5.0降级成php-redis4.3
2019-08-22 00:01 893最新版本的php的redis插件,版本是5.0 但是可能会有 ... -
aes加密解密php和java互通代码
2019-08-20 20:19 1168代码主要来源如下,但是注意做了修改: https://gist ...
相关推荐
8. **事件系统与中间件**:Phalcon的事件系统允许在特定操作前或后触发回调函数,而中间件则提供了一种处理HTTP请求的层叠方式。这两部分将解释如何利用这些特性增强应用的功能和安全性。 9. **命令行工具**:...
10. **事件管理(Events)**:Phalcon的事件管理系统允许开发者监听和响应框架内部或自定义的事件,实现行为的插件化和扩展。 11. **日志(Logging)**:Phalcon提供了简单的日志接口,可以记录应用程序中的各种...
5. 缓存支持:Phalcon提供了多种缓存策略,包括文件、内存(如APC和Memcached)以及数据库级别的缓存,有助于提升应用性能。 6. 数据库抽象层和查询构建器:Phalcon的数据库组件提供了面向对象的API,方便进行...
作为一款全栈框架,Phalcon提供了一系列组件,涵盖了从路由、数据库交互到视图渲染等多个方面,使得开发者能够以更简洁、高效的方式编写代码。 一、Phalcon的特性与优势 1. C语言扩展:Phalcon是用C语言编写的,并...
这使得开发者可以使用面向对象的方式来操作数据库。 4. **缓存机制**:框架内建了多种缓存策略,包括文件、内存(如APCu或Memcached)和数据库,以提高数据读取速度。 5. **安全特性**:Phalcon提供了安全相关的...
4. **数据库访问对象(ORM)**:Phalcon的ORM(对象关系映射)允许开发者以面向对象的方式操作数据库,支持多种数据库系统,如MySQL、PostgreSQL和SQLite等,并提供了强大的查询构造器和关系映射功能。 5. **视图...
它支持多种数据库系统,如MySQL、PostgreSQL和SQLite等,允许开发者使用面向对象的方式进行数据操作。 5. **路由** 路由是Phalcon中的关键部分,用于将HTTP请求映射到相应的控制器和动作。框架提供了一种灵活的...
在 Phalcon 的文档中,我们首先看到对框架的介绍,包括它的架构、设计哲学和基本的使用方式。文档详细地解释了如何安装 Phalcon PHP 框架,并通过一系列教程来帮助开发者理解 Phalcon 的核心功能。 教程部分从基础...
4. **事件系统**:Phalcon的事件管理器允许开发者在框架的关键操作点插入自定义代码,实现如日志记录、权限验证等功能,遵循面向切面编程(AOP)理念。 5. **安全机制**:框架内置了防止SQL注入、XSS攻击等的安全...
Phalcon API 开发手册是专为开发者设计的一份详尽指南,主要针对使用Phalcon框架进行API开发。Phalcon是一个高性能、全栈的PHP框架,它以C扩展的形式实现,为PHP开发者提供了卓越的性能和丰富的功能。这份手册旨在...
9. **兼容性**:Phalcon Debugbar与多种浏览器兼容,包括Chrome、Firefox等,确保在各种环境下都能正常工作。 安装与使用Phalcon Debugbar的步骤如下: 1. **获取源码**:从GitHub或其他源获取phalcon-debugbar的...
9. **视图系统**:PhalconPHP的视图组件支持模板引擎,允许开发者使用单独的文件来处理每个页面的展示部分。 10. **命令行工具**:PhalconPHP提供了CLI工具,用于生成模型、控制器、迁移等,加速开发过程。 11. **...
通过阅读代码,你可以学习到 Phalcon 如何集成自定义组件,以及如何使用 JavaScript 实现前端交互。此外,还可以通过运行测试用例来确保组件的功能正确性。 总的来说,这个 Phalcon 简单建议器是一个学习 Phalcon ...
基于Phalcon v4和UIKit v3的CMS 要求 Nginx的 PHP> = 7.2 MySQL的> = 5.7.9 菲尔康> = 4.1.0 PHP ZIP扩展 (套接字应用程序的可选) 包括 核心功能 多种语言 通用内容管理器 自订栏位 选单 小部件 外挂程式 ...
10. **事件管理(Events Manager)**:Phalcon的事件系统允许在框架组件之间进行交互和插件扩展。测试会确保事件触发和响应的正确性。 通过Phalcon_Tests-main中的测试用例,开发者和贡献者可以确保对PhalconPHP...
3. **事件系统**:Phalcon 2支持事件驱动编程,允许开发者在特定的代码执行点插入自定义行为,如模型操作前后触发的事件。 4. **安全特性**:内置的安全组件,如SQL防止注入、XSS防御,提高了应用的安全性。 5. **...
文件列表中的"phalcon-syntax-master"很可能是一个Git仓库的主分支名,通常包含主题的所有源文件,如`syntax.css`(定义语法高亮的颜色规则)、`package.json`(描述主题信息和依赖)、`README.md`(提供主题的使用...
9. 自定义行为和事件监听 10. ORM与原生SQL的混合使用场景 了解和掌握PHP中的ORM技术,对于提升PHP Web开发的效率和代码质量有着显著的帮助。通过阅读这篇博客,开发者可以学习到如何更好地利用ORM进行数据库操作,...
4. 缓存管理:为了进一步提升性能,Cphalcon提供了缓存模块,如Phalcon\Cache,支持文件、内存(如APC、Memcached、Redis)等多种缓存后端,方便开发者对数据进行高速缓存。 5. 安全性:Cphalcon包含了一系列安全...
PHP提供了错误报告级别设置和异常处理功能,同时开发者可能会自定义错误处理函数或使用第三方库记录日志。 8. 部署与性能优化: 部署时,可能涉及Apache或Nginx服务器配置、PHP版本选择、缓存机制(如OPcache或...