Category: ninny Project

A project based on Zend Framework 1.0. Plan to improve usage of the Zend Framework. And supply some better practise using Zend Framework.

  • ninny project 单元测试框架使用说明

    系统运行要求

    • PHPUnit 3.1.x

    PHPUnit 的安装

    参考:http://www.phpunit.de/pocket_guide/3.1/en/installation.html

    建议使用 Pear 方式安装。 Pear 包的安装请参考http://pear.php.net/manual/en/installation.php

    测试用例的编写

    参考:http://www.phpunit.de/pocket_guide/3.1/en/writing-tests-for-phpunit.html

    应注意,在本框架使用中实际无需在测试用例加载任何文件。

    配置文件的设置

    <?xml version=’1.0′ encoding=’UTF-8′ ?>
    <AllTests>
    <TestSuite>
    <name>FoobarTest</name>
    <require>AnotherFoobar.php</require>
    </TestSuite>
    <Test>
    <class>Foo_Bar_AllTest</class>
    <method>suite</method>
    <require>/home/foo/bar/AnotherLib.php</require>
    </Test>
    </AllTests>

    • TestSuite? 标签指定需要加载的单元测试用例。name 标签指定测试用例名(类名)。
    • Test 为一组单元测试用例。class 标签指定测试用例组类名,method 标签指定该类返回 PHPUnit_Framework_TestSuite 实例的类方法。
    • 类名的命名应遵从 Zend Framework 的命名规则,即下划线分隔文件路径作为类名。如:类文件存放于 Foo/Bar/AllTest.php,则类对应为 class Foo_Bar_AllTest {…}。
    • 测试用例和测试用例组都将自动加载。保存于 include path 下,符合 Zend Framework 类命名规范的类也都将自动加载(使用 Zend_Loader::registerAutoload() 方法)。若还需加载其他文件,应指定 require 标签,require 标签内容为待加载文件的完整路径或相对于测试目录(tests)的相对路径。

     

    执行测试

    1. php 的 cli 程序应在系统 PATH 中。
    2. PHPUnit 的执行程序应在系统 PATH 中(Windows 下为 PHPUnit.bat,Linux 下为 PHPUnit.sh)。

    All Tests

    进入测试框架所在目录,执行 php AllTests?.php。

    One Test

    进入测试框架所在目录,执行 php OneTest?.php Test_Name。

    改进方向

    • 迭代测试用例,子集测试用例可作为独立的测试执行,亦可通过配置文件加载入上级测试执行。
    • 通过配置文件自动生成测试用例框架,编写测试时只需要填写相应测试断言。
  • ninny Project 的数据库完成向 mysql 5.0 的迁移

    升级为 PowerDesigner 12 来维护逻辑表果然方便多了,可以随意生成 Oracle 10g 和 mysql 5.0 的物理表。在修改了配置文件之后,我惊喜的发现原来一行代码也不需要修改,就完成了迁移工作。Zend Framework 的数据库部分的设计果然可圈可点。

    由于服务器自身的限制,以 Oracle 作为数据库的版本无法提供演示和下载。所以迫不得已只好再维护一个 mysql 5.0 的数据库版本。PowerDesigner 真的是利器,逻辑表不需要任何修改就可以生成 mysql 版本的物理表。如果大家有类似的迁移需求,推荐大家也用一用这个。等有钱了,一定买一套正版回来用。

    修改了资源权值和角色权值为添加时间戳,这样可以省掉维护两个触发器。PowerDesigner 12 好像还不能编写 mysql 5.0 的触发器。或许我需要手工添加一些规则才可以再 PowerDesigner 中直接编写 mysql 的触发器。不过不管怎么样,现在不需要触发器也可以按正常的权值构造 ACL 对象了。

    下一步的计划就是构造一个后台管理,将资源、角色、权限、用户等的管理都放到后台中进行。

  • 为提升便利性,为 ninny Project 添加两个脚本工具

    工具存放地址:svn://www.i-fang.com/IfangSites/trunk/app/bin

    说明:这些工具是为快速开发编写的,请不要尝试在部署的时候使用。因为,多数服务器无法使用 CLI 方式执行 PHP 脚本。而这些工具只能执行于 CLI 模式下。

    1. collectResouces.php —— 资源收集工具

      我一直为 ACL 中资源的管理而烦恼,所以编写了这个工具。对于通用性资源(module、controller、action)进行采集,并按照顺序插入数据库中的资源表。
      使用方法:php collectResouces.php
    2. createModule.php —— 模块、控制器、动作自动创建工具

      其实编写 Controller Action 和 View Script 的第一步工作都是一样的。创建目录,创建文件,添加固定的内容……对于我来说,很烦。所以编写了这个脚本可以通过简单的 Yes/No 方式自动创建必要的目录、文件、代码框架。
      使用方法:php createModule.php
  • 基于 Zend Framework 的整合快速开发结构

    在思考现有项目代码重构的过程中的附带产品。主要是基于 Zend Framework 并对其中一些内容进行扩展、整合。放弃部分灵活性,同时提高耦合度为代价,换取开发速度的提升。

    我准备将这个项目的代号命名为“ninny”。

    项目SVN : svn://www.i-fang.com/IfangSites

    项目页面:http://blog.xxiyy.com/?page_id=21

    欢迎拍砖。

    现有 E-R 图,权限控制部分

    E-R 图