phantomjs实现swf Flash转png图片

因为在项目中需要将大量的swf格式的flash文件转换为web图片格式,而且有可能的话还要获取flash中可以点击的按钮的热点位置。

一般的分析流程是swf格式的flash图片需要先反编译才能得到矢量、图片、文字、frame、shape、button、path等信息,然后将反编译后得到的资源进行导出。或者直接对swf运行到最后的显示界面进行截图,这显然是一个很耗时的研究工程。后面发现Sothink SWF Decompiler(硕思闪客精灵)这款软件可以将swf文件批量导出为html5文件,该html5用svg格式图片实现swf的渲染,而且部分swf热点位置在svg中有相关的位置信息,可能可以提取使用。 Continue reading phantomjs实现swf Flash转png图片

Codeigniter – ci框架浅析

Codeigniter PHP框架的MVC 代码结构, 算是比较简单和容易理解的,以下是一些浅析:

统一入口文件index.php

  1. 开发/生产环境配置,设置不同的报错等级;
  2. 设置目录常量:系统目录常量、应用目录、前台目录、View视图目录等;
  3. 设置默认时区或默认mb编码:
    //mb_internal_encoding('UTF-8');
    date_default_timezone_set('Asia/Shanghai');

Continue reading Codeigniter – ci框架浅析

Phalcon initialize 和 onConstruct在Controller和Model中的初始化

Phalcon 中在Controller和Model中的初始化方法容易比较混淆的有initialize() 和 onConstruct();

值得注意的是initialize() 在控制器的一次request只会执行一次, 在Model中也是只会执行一次.
因此在控制器Controller1中执行initialize()后, 后面的代码再次使用new Controller1(), 或者再调用new Controller2()是不会执行Controller1或Controller2中的initialize方法的. Continue reading Phalcon initialize 和 onConstruct在Controller和Model中的初始化

全面了解PHP设计模式-创建型结构型行为型

PHP5对面向对象编程的支持越来越大,因此用于Java等流行的OO语言中的设计模式也在PHP中用得越来越多,它使得我们的程序更加健壮,灵活,维护性或扩展性更好,甚至提高代码的性能。大多数 MVC PHP流行框架或开源类库中,都会用到一些经典的PHP设计模式。这几天抽空全面看了下三大类型的设计模式的PHP实现。设计模式不管是对于PHP还是Java,或是其他OO语言,其设计思想都是一致的,只是用不同的语言工具表达出来,或者说不同的语言都可以去套用。Github上有个项目整理得不错,顺便做了一系列笔记。上面还有一些测试用例,感兴趣的可直接戳: DesignPatternsPHP@github

在PHP设计模式中,GoF “四人帮”经典的《设计模式》一书中介绍了23种设计模式,基本涵盖了所有设计模式,它将设计模式分成创建型,结构型,行为型三大类型,另外还有其他几种设计模式。GoF中有些没有提到。 Continue reading 全面了解PHP设计模式-创建型结构型行为型

PHP设计模式-服务定位模式 ServiceLocator

在PHP服务定位设计模式(Service Locator)中,抽象层对涉及尝试获取一个服务的过程进行封装。该模式使用一个称为”Service Locator”的中心注册表来处理请求并返回处理特定服务。服务定位器知道如何控制应用程序需要的所有服务。

服务定位模式PHP如何设计:使用ServiceLocator为指定接口注册服务。通过使用接口不用知道它的实现就可以获取服务并在应用的类中使用该服务。而在启动的时候我们就可以注入Service Locator对象。 Continue reading PHP设计模式-服务定位模式 ServiceLocator

PHP设计模式-仓库模式 Repository

PHP仓库设计模式(Repository)是一个位于领域层(Domain Layer)和数据映射层(数据访问层)之间的中介层,它使用类似集合仓库的接口来访问领域对象。Repository 仓库封装了持久化存储在数据库中的对象的集合和对它们的操作,为持久层提供了一种更加面向对象的方式。Repository 同样对应用领域层和数据映射层之间的简洁分离和单向依赖有很大的帮助。

比如这些PHP框架Doctrine 2 的ORM模块: 在Entity 和 DBAL之间就有仓库层调停两者关系并包含获得对象的方法。其他如Laravel框架等。下面是MemoryStorage和Post数据映射层之间的Repository的PHP代码实例: Continue reading PHP设计模式-仓库模式 Repository

PHP设计模式-委托Delegation模式

在PHP委托设计模式(Delegation)中,有一个对象接受请求,同时将请求委托给另一个对象来处理。许多其他的模式,如状态模式策略模式访问者模式本质上就是委托模式的特殊形式。委托模式使得我们可以用聚合来替代继承。

实际场景比如有一个PHP项目任务,团队主管接受需求部门的请求,然后主管委托初级开发工程师去处理完成。PHP示例代码如下:
Continue reading PHP设计模式-委托Delegation模式

PHP设计模式-访问者 Visitor

PHP访问者设计模式(Visitor) 可以让你对某些对象的操作外包给其他对象。它封装了一些施加于某数据结构元素之上的操作。一旦这些操作需要修改,接受这个操作的数据结构可以保持不变。

也可以这样理解:现在有一个由许多对象构成的对象结构,这些对象的类都拥有一个accept方法用来接受访问者Visitor对象;访问者实现了一个拥有一个visit方法的接口,这个方法对访问的对象结构中不同类型的元素作出不同的反应;visitor访问一次,就遍历整个对象结构,每个元素都实施accept方法,同时在每个元素的accept方法中回调访问者的visit方法,从而使访问者得以处理对象结构的每个元素。我们可以针对不同的类型的对象结构元素,设计不同的访问者实体类来完成不同的操作。 Continue reading PHP设计模式-访问者 Visitor

PHP设计模式-模板方法 Template Method

PHP模板方法设计模式 (Template Method) 是一种行为设计模式,指在操作中定义一套算法的骨架/模板,将一些步骤延迟到子类中。模板方法子类重新定义算法的特定步骤之后,不会对主算法的结构造成影响。

它的中心思想是让抽象模板的子类“完成”整个算法。这很类似于PHP框架的库。用户需要实现相关的子类才能使程序进行工作。将子类放在不同的模板中进行重用也可以减少不必要的复制粘帖,也很容易就可以解耦实体类。

// 抽象模板类
abstract class Journey Continue reading PHP设计模式-模板方法 Template Method